# frozen_string_literal: true module ActionDispatch module CookieJarExtensions private # Monkey-patch ActionDispatch to serve secure cookies to Tor Hidden Service # users. Otherwise, ActionDispatch would drop the cookie over HTTP. def write_cookie?(*) request.host.end_with?('.onion') || super end end end ActionDispatch::Cookies::CookieJar.prepend(ActionDispatch::CookieJarExtensions) module Rack module SessionPersistedExtensions def security_matches?(request, options) request.host.end_with?('.onion') || super end end end Rack::Session::Abstract::Persisted.prepend(Rack::SessionPersistedExtensions)