about summary refs log blame commit diff
path: root/lib/action_dispatch/cookie_jar_extensions.rb
blob: 1be9053ba6b168700857da968577bde8a401e480 (plain) (tree)
1
2
3
4
5
6
7
8
9







                                                                               
                                               



                                                                               


                                           
                                               



                                                                            
# 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)