diff options
author | Assain <assainjaleel20@gmail.com> | 2017-08-14 19:16:58 +0530 |
---|---|---|
committer | Assain <assainjaleel20@gmail.com> | 2017-08-20 23:07:56 +0530 |
commit | 5f37e16ab5fb36555175379ad96b2da3c3b31a0b (patch) | |
tree | 9105e2146ecbb50a2ab9e347434a94f1ac6206e7 /actionpack/lib/action_dispatch/middleware | |
parent | 57585b6f3b8ef1703970c858ba6297e6427be0bd (diff) | |
download | rails-5f37e16ab5fb36555175379ad96b2da3c3b31a0b.tar.gz rails-5f37e16ab5fb36555175379ad96b2da3c3b31a0b.tar.bz2 rails-5f37e16ab5fb36555175379ad96b2da3c3b31a0b.zip |
freshen :expires option with duration support and add expiry metadata to cookies
Diffstat (limited to 'actionpack/lib/action_dispatch/middleware')
-rw-r--r-- | actionpack/lib/action_dispatch/middleware/cookies.rb | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/cookies.rb b/actionpack/lib/action_dispatch/middleware/cookies.rb index 5a55ee13ee..c0913715ac 100644 --- a/actionpack/lib/action_dispatch/middleware/cookies.rb +++ b/actionpack/lib/action_dispatch/middleware/cookies.rb @@ -360,7 +360,11 @@ module ActionDispatch @cookies.map { |k, v| "#{escape(k)}=#{escape(v)}" }.join "; " end - def handle_options(options) #:nodoc: + def handle_options(options) # :nodoc: + if options[:expires].respond_to?(:from_now) + options[:expires] = options[:expires].from_now + end + options[:path] ||= "/" if options[:domain] == :all || options[:domain] == "all" @@ -488,6 +492,14 @@ module ActionDispatch def request; @parent_jar.request; end private + def expiry_options(options) + if options[:expires].respond_to?(:from_now) + { expires_in: options[:expires] } + else + { expires_at: options[:expires] } + end + end + def parse(name, data); data; end def commit(options); end end @@ -569,7 +581,7 @@ module ActionDispatch end def commit(options) - options[:value] = @verifier.generate(serialize(options[:value])) + options[:value] = @verifier.generate(serialize(options[:value]), expiry_options(options)) raise CookieOverflow if options[:value].bytesize > MAX_COOKIE_SIZE end @@ -609,7 +621,7 @@ module ActionDispatch end def commit(options) - options[:value] = @encryptor.encrypt_and_sign(serialize(options[:value])) + options[:value] = @encryptor.encrypt_and_sign(serialize(options[:value]), expiry_options(options)) raise CookieOverflow if options[:value].bytesize > MAX_COOKIE_SIZE end |