##// 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 def login
34 def login
35 if request.get?
35 if request.get?
36 if User.current.logged?
36 if User.current.logged?
37 redirect_to home_url
37 redirect_back_or_default home_url, :referer => true
38 end
38 end
39 else
39 else
40 authenticate_user
40 authenticate_user
@@ -373,7 +373,7 class ApplicationController < ActionController::Base
373 url
373 url
374 end
374 end
375
375
376 def redirect_back_or_default(default)
376 def redirect_back_or_default(default, options={})
377 back_url = params[:back_url].to_s
377 back_url = params[:back_url].to_s
378 if back_url.present?
378 if back_url.present?
379 begin
379 begin
@@ -387,6 +387,9 class ApplicationController < ActionController::Base
387 logger.warn("Could not redirect to invalid URL #{back_url}")
387 logger.warn("Could not redirect to invalid URL #{back_url}")
388 # redirect to default
388 # redirect to default
389 end
389 end
390 elsif options[:referer]
391 redirect_to_referer_or default
392 return
390 end
393 end
391 redirect_to default
394 redirect_to default
392 false
395 false
@@ -33,7 +33,25 class AccountControllerTest < ActionController::TestCase
33 assert_select 'input[name=password]'
33 assert_select 'input[name=password]'
34 end
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 @request.session[:user_id] = 2
55 @request.session[:user_id] = 2
38
56
39 get :login
57 get :login
General Comments 0
You need to be logged in to leave comments. Login now