-
Notifications
You must be signed in to change notification settings - Fork 166
LG-11777: Handle logout request as already logged out if concurrent session exists #9842
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
71f0bfc
41391be
0e9a06d
e21ad34
ddfb22b
9f8b07c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -9,6 +9,10 @@ def i18n_message(default = nil) | |
| message.is_a?(Symbol) ? build_message(message) : message.to_s | ||
| end | ||
|
|
||
| def redirect_url | ||
| request.env["devise_#{warden_message}_failure_redirect_url"] || super | ||
| end | ||
|
Comment on lines
+12
to
+14
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The way this works is we assume that a concurrent session logout throw will be handled by Devise's failure app responder. By default, this would redirect to the |
||
|
|
||
| private | ||
|
|
||
| def build_message(message) | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| require 'rails_helper' | ||
| require 'custom_devise_failure_app' | ||
|
|
||
| RSpec.describe CustomDeviseFailureApp do | ||
aduth marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| subject(:failure_app) { CustomDeviseFailureApp.new } | ||
|
|
||
| let(:message) { :invalid } | ||
| let(:env) { { 'warden' => OpenStruct.new(message:) } } | ||
| let(:request) { ActionDispatch::Request.new(env) } | ||
|
|
||
| before do | ||
| failure_app.set_request!(request) | ||
| end | ||
|
|
||
| describe '#redirect_url' do | ||
| it 'defers to to the default implementation' do | ||
| expect_any_instance_of(Devise::FailureApp).to receive(:redirect_url) | ||
|
|
||
| failure_app.redirect_url | ||
| end | ||
|
|
||
| context 'with custom redirect url assigned in request env' do | ||
| let(:custom_redirect_url) { '/redirect' } | ||
| let(:env) { super().merge('devise_invalid_failure_redirect_url' => custom_redirect_url) } | ||
|
|
||
| it 'returns the custom redirect url' do | ||
| expect(failure_app.redirect_url).to eq(custom_redirect_url) | ||
| end | ||
| end | ||
| end | ||
| end | ||
Uh oh!
There was an error while loading. Please reload this page.