mirror of
https://github.com/heartcombo/devise.git
synced 2026-04-06 03:01:21 -04:00
Pass locale with activatable / timeoutable hooks (#5815)
We need to explicitly pass the `locale` around from the options (passed to `warden.authenticate!` for instance) or the `I18n.locale` when logging out and redirecting the user via `throw :warden`, otherwise in a multi-locale app we'd lose the locale previously set / passed around and fallback to the default for that flash message. This is a follow-up of the fixes in #5567 where we implemented the locale passing logic down to the failure app, but it missed these places where we were using `throw :warden`. Closes #5812
This commit is contained in:
committed by
GitHub
parent
cd9c21a067
commit
051f94a498
@@ -7,6 +7,6 @@ Warden::Manager.after_set_user do |record, warden, options|
|
||||
if record && record.respond_to?(:active_for_authentication?) && !record.active_for_authentication?
|
||||
scope = options[:scope]
|
||||
warden.logout(scope)
|
||||
throw :warden, scope: scope, message: record.inactive_message
|
||||
throw :warden, scope: scope, message: record.inactive_message, locale: options.fetch(:locale, I18n.locale)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -25,7 +25,7 @@ Warden::Manager.after_set_user do |record, warden, options|
|
||||
record.timedout?(last_request_at) &&
|
||||
!proxy.remember_me_is_active?(record)
|
||||
Devise.sign_out_all_scopes ? proxy.sign_out : proxy.sign_out(scope)
|
||||
throw :warden, scope: scope, message: :timeout
|
||||
throw :warden, scope: scope, message: :timeout, locale: options.fetch(:locale, I18n.locale)
|
||||
end
|
||||
|
||||
unless env['devise.skip_trackable']
|
||||
|
||||
Reference in New Issue
Block a user