@@ -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_t |
|
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_ |
|
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