##// END OF EJS Templates
Redirect to back_url or referer when clicking "Sign in" while already logged-in (#15926)....
Jean-Philippe Lang -
r12430:a2f869b43e07
parent child
Show More
@@ -34,7 +34,7 class AccountController < ApplicationController
34 34 def login
35 35 if request.get?
36 36 if User.current.logged?
37 redirect_to home_url
37 redirect_back_or_default home_url, :referer => true
38 38 end
39 39 else
40 40 authenticate_user
@@ -373,7 +373,7 class ApplicationController < ActionController::Base
373 373 url
374 374 end
375 375
376 def redirect_back_or_default(default)
376 def redirect_back_or_default(default, options={})
377 377 back_url = params[:back_url].to_s
378 378 if back_url.present?
379 379 begin
@@ -387,6 +387,9 class ApplicationController < ActionController::Base
387 387 logger.warn("Could not redirect to invalid URL #{back_url}")
388 388 # redirect to default
389 389 end
390 elsif options[:referer]
391 redirect_to_referer_or default
392 return
390 393 end
391 394 redirect_to default
392 395 false
@@ -33,7 +33,25 class AccountControllerTest < ActionController::TestCase
33 33 assert_select 'input[name=password]'
34 34 end
35 35
36 def test_get_login_while_logged_in_should_redirect_to_home
36 def test_get_login_while_logged_in_should_redirect_to_back_url_if_present
37 @request.session[:user_id] = 2
38 @request.env["HTTP_REFERER"] = 'http://test.host/issues/show/1'
39
40 get :login, :back_url => 'http://test.host/issues/show/1'
41 assert_redirected_to '/issues/show/1'
42 assert_equal 2, @request.session[:user_id]
43 end
44
45 def test_get_login_while_logged_in_should_redirect_to_referer_without_back_url
46 @request.session[:user_id] = 2
47 @request.env["HTTP_REFERER"] = 'http://test.host/issues/show/1'
48
49 get :login
50 assert_redirected_to '/issues/show/1'
51 assert_equal 2, @request.session[:user_id]
52 end
53
54 def test_get_login_while_logged_in_should_redirect_to_home_by_default
37 55 @request.session[:user_id] = 2
38 56
39 57 get :login
General Comments 0
You need to be logged in to leave comments. Login now