@@ -34,7 +34,7 class AccountController < ApplicationController | |||
|
34 | 34 | def login |
|
35 | 35 | if request.get? |
|
36 | 36 | if User.current.logged? |
|
37 |
redirect_t |
|
|
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_ |
|
|
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