1
0
Fork 0
mirror of https://github.com/heartcombo/devise.git synced 2022-11-09 12:18:31 -05:00

Serialize the last_request_at entry as an Integer

Pushing the `Time` object inside the session has inconsistencies
across different serializers and we should use a more primitive type
so we don't need any specific parsing logic for the JSON serializer.
This commit is contained in:
Lucas Mazza 2014-03-28 22:51:56 -03:00
parent f19e82021f
commit da0c27393f
2 changed files with 7 additions and 3 deletions

View file

@ -9,6 +9,11 @@ Warden::Manager.after_set_user do |record, warden, options|
if record && record.respond_to?(:timedout?) && warden.authenticated?(scope) && options[:store] != false if record && record.respond_to?(:timedout?) && warden.authenticated?(scope) && options[:store] != false
last_request_at = warden.session(scope)['last_request_at'] last_request_at = warden.session(scope)['last_request_at']
if last_request_at.is_a? Integer
last_request_at = Time.at(last_request_at).utc
end
proxy = Devise::Hooks::Proxy.new(warden) proxy = Devise::Hooks::Proxy.new(warden)
if record.timedout?(last_request_at) && !env['devise.skip_timeout'] if record.timedout?(last_request_at) && !env['devise.skip_timeout']
@ -22,7 +27,7 @@ Warden::Manager.after_set_user do |record, warden, options|
end end
unless env['devise.skip_trackable'] unless env['devise.skip_trackable']
warden.session(scope)['last_request_at'] = Time.now.utc warden.session(scope)['last_request_at'] = Time.now.utc.to_i
end end
end end
end end

View file

@ -8,12 +8,11 @@ class SessionTimeoutTest < ActionDispatch::IntegrationTest
test 'set last request at in user session after each request' do test 'set last request at in user session after each request' do
sign_in_as_user sign_in_as_user
old_last_request = last_request_at
assert_not_nil last_request_at assert_not_nil last_request_at
@controller.user_session.delete('last_request_at')
get users_path get users_path
assert_not_nil last_request_at assert_not_nil last_request_at
assert_not_equal old_last_request, last_request_at
end end
test 'set last request at in user session after each request is skipped if tracking is disabled' do test 'set last request at in user session after each request is skipped if tracking is disabled' do