about summary refs log tree commit diff
path: root/lib/action_dispatch/cookie_jar_extensions.rb
diff options
context:
space:
mode:
authorStarfall <us@starfall.systems>2021-02-21 13:10:39 -0600
committerStarfall <us@starfall.systems>2021-02-21 13:10:39 -0600
commit86de4ec5559164a49b2790d774f8bba5af02c64f (patch)
tree804ac22f8ea54824346d336f9fe7664e205719ff /lib/action_dispatch/cookie_jar_extensions.rb
parent3693000bf6a94219e3cc4a29a6cb4ac51b78cf2a (diff)
parent8792128f38e19b0d7882468a4f1f9362b98793a0 (diff)
Merge remote-tracking branch 'glitchsoc/main' into main
Diffstat (limited to 'lib/action_dispatch/cookie_jar_extensions.rb')
-rw-r--r--lib/action_dispatch/cookie_jar_extensions.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/action_dispatch/cookie_jar_extensions.rb b/lib/action_dispatch/cookie_jar_extensions.rb
new file mode 100644
index 000000000..44c39c1f8
--- /dev/null
+++ b/lib/action_dispatch/cookie_jar_extensions.rb
@@ -0,0 +1,15 @@
+# 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.headers['Host'].ends_with?('.onion') || super
+    end
+  end
+end
+
+ActionDispatch::Cookies::CookieJar.prepend(ActionDispatch::CookieJarExtensions)