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:
parent
f19e82021f
commit
da0c27393f
2 changed files with 7 additions and 3 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue