Commit ab6b7dd95df37edce19a4e615068c1d87a8c4496
Committed by
Antonio Terceiro
1 parent
c5c14f9a
Exists in
master
and in
29 other branches
ActionItem1203: where to go after login/logout
* after login: the same place the user was before * after logout: the site root (/)
Showing
2 changed files
with
23 additions
and
16 deletions
Show diff stats
app/controllers/public/account_controller.rb
@@ -17,6 +17,7 @@ class AccountController < ApplicationController | @@ -17,6 +17,7 @@ class AccountController < ApplicationController | ||
17 | def login | 17 | def login |
18 | @user = User.new | 18 | @user = User.new |
19 | @person = @user.build_person | 19 | @person = @user.build_person |
20 | + store_location(request.referer) | ||
20 | return unless request.post? | 21 | return unless request.post? |
21 | self.current_user = User.authenticate(params[:user][:login], params[:user][:password]) if params[:user] | 22 | self.current_user = User.authenticate(params[:user][:login], params[:user][:password]) if params[:user] |
22 | if logged_in? | 23 | if logged_in? |
@@ -24,8 +25,10 @@ class AccountController < ApplicationController | @@ -24,8 +25,10 @@ class AccountController < ApplicationController | ||
24 | self.current_user.remember_me | 25 | self.current_user.remember_me |
25 | cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } | 26 | cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } |
26 | end | 27 | end |
27 | - go_to_user_initial_page if redirect? | ||
28 | - flash[:notice] = _("Logged in successfully") if redirect? | 28 | + if redirect? |
29 | + go_to_initial_page | ||
30 | + flash[:notice] = _("Logged in successfully") | ||
31 | + end | ||
29 | else | 32 | else |
30 | flash[:notice] = _('Incorrect username or password') if redirect? | 33 | flash[:notice] = _('Incorrect username or password') if redirect? |
31 | redirect_to :back if redirect? | 34 | redirect_to :back if redirect? |
@@ -70,7 +73,7 @@ class AccountController < ApplicationController | @@ -70,7 +73,7 @@ class AccountController < ApplicationController | ||
70 | redirect_to :controller => 'search', :action => 'assets', :asset => 'communities', :wizard => true | 73 | redirect_to :controller => 'search', :action => 'assets', :asset => 'communities', :wizard => true |
71 | return | 74 | return |
72 | else | 75 | else |
73 | - go_to_user_initial_page if redirect? | 76 | + go_to_initial_page if redirect? |
74 | end | 77 | end |
75 | end | 78 | end |
76 | if @wizard | 79 | if @wizard |
@@ -105,7 +108,7 @@ class AccountController < ApplicationController | @@ -105,7 +108,7 @@ class AccountController < ApplicationController | ||
105 | cookies.delete :auth_token | 108 | cookies.delete :auth_token |
106 | reset_session | 109 | reset_session |
107 | flash[:notice] = _("You have been logged out.") | 110 | flash[:notice] = _("You have been logged out.") |
108 | - redirect_back_or_default(:controller => 'account', :action => 'index') | 111 | + redirect_to :controller => 'home', :action => 'index' |
109 | end | 112 | end |
110 | 113 | ||
111 | def change_password | 114 | def change_password |
@@ -280,12 +283,11 @@ class AccountController < ApplicationController | @@ -280,12 +283,11 @@ class AccountController < ApplicationController | ||
280 | params[:answer] == enterprise.send(enterprise.question).to_s | 283 | params[:answer] == enterprise.send(enterprise.question).to_s |
281 | end | 284 | end |
282 | 285 | ||
283 | - def go_to_user_initial_page | 286 | + def go_to_initial_page |
284 | if environment == current_user.environment | 287 | if environment == current_user.environment |
285 | redirect_back_or_default(user.admin_url) | 288 | redirect_back_or_default(user.admin_url) |
286 | else | 289 | else |
287 | redirect_back_or_default(:controller => 'home') | 290 | redirect_back_or_default(:controller => 'home') |
288 | end | 291 | end |
289 | end | 292 | end |
290 | - | ||
291 | end | 293 | end |
test/functional/account_controller_test.rb
@@ -33,21 +33,24 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -33,21 +33,24 @@ class AccountControllerTest < Test::Unit::TestCase | ||
33 | assert_response :redirect | 33 | assert_response :redirect |
34 | end | 34 | end |
35 | 35 | ||
36 | - should 'redirect to user control panel on login' do | 36 | + should 'redirect to where user was on login' do |
37 | + @request.env["HTTP_REFERER"] = '/bli' | ||
37 | u = new_user | 38 | u = new_user |
38 | post :login, :user => {:login => 'quire', :password => 'quire'} | 39 | post :login, :user => {:login => 'quire', :password => 'quire'} |
39 | 40 | ||
40 | - assert_redirected_to :controller => 'profile_editor', :action => 'index', :profile => 'quire' | 41 | + assert_redirected_to '/bli' |
41 | end | 42 | end |
42 | 43 | ||
43 | - should 'redirect to home when login on other environment' do | 44 | + should 'redirect to where was when login on other environment' do |
44 | e = Environment.create!(:name => 'other_environment') | 45 | e = Environment.create!(:name => 'other_environment') |
45 | e.domains << Domain.new(:name => 'other.environment') | 46 | e.domains << Domain.new(:name => 'other.environment') |
46 | e.save! | 47 | e.save! |
47 | u = create_user('test_user', :environment => e).person | 48 | u = create_user('test_user', :environment => e).person |
49 | + | ||
50 | + @request.env["HTTP_REFERER"] = '/bli' | ||
48 | post :login, :user => {:login => 'test_user', :password => 'test_user'} | 51 | post :login, :user => {:login => 'test_user', :password => 'test_user'} |
49 | 52 | ||
50 | - assert_redirected_to :controller => 'home' | 53 | + assert_redirected_to '/bli' |
51 | end | 54 | end |
52 | 55 | ||
53 | def test_should_fail_login_and_not_redirect | 56 | def test_should_fail_login_and_not_redirect |
@@ -120,6 +123,7 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -120,6 +123,7 @@ class AccountControllerTest < Test::Unit::TestCase | ||
120 | end | 123 | end |
121 | 124 | ||
122 | def test_should_remember_me | 125 | def test_should_remember_me |
126 | + @request.env["HTTP_REFERER"] = '/bli' | ||
123 | post :login, :user => {:login => 'johndoe', :password => 'test'}, :remember_me => "1" | 127 | post :login, :user => {:login => 'johndoe', :password => 'test'}, :remember_me => "1" |
124 | assert_not_nil @response.cookies["auth_token"] | 128 | assert_not_nil @response.cookies["auth_token"] |
125 | end | 129 | end |
@@ -284,12 +288,6 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -284,12 +288,6 @@ class AccountControllerTest < Test::Unit::TestCase | ||
284 | end | 288 | end |
285 | end | 289 | end |
286 | 290 | ||
287 | - should 'correct redirect after login' do | ||
288 | - user = create_user('correct_redirect').person | ||
289 | - post :login, :user => {:login => 'correct_redirect', :password => 'correct_redirect'} | ||
290 | - assert_redirected_to :controller => 'profile_editor' | ||
291 | - end | ||
292 | - | ||
293 | should 'signup from wizard' do | 291 | should 'signup from wizard' do |
294 | assert_difference User, :count do | 292 | assert_difference User, :count do |
295 | post :signup, :user => { :login => 'mylogin', :password => 'mypassword', :password_confirmation => 'mypassword', :email => 'mylogin@example.com' }, :wizard => true | 293 | post :signup, :user => { :login => 'mylogin', :password => 'mypassword', :password_confirmation => 'mypassword', :email => 'mylogin@example.com' }, :wizard => true |
@@ -644,6 +642,13 @@ class AccountControllerTest < Test::Unit::TestCase | @@ -644,6 +642,13 @@ class AccountControllerTest < Test::Unit::TestCase | ||
644 | assert_equal 'example.com', Person['testuser'].organization | 642 | assert_equal 'example.com', Person['testuser'].organization |
645 | end | 643 | end |
646 | 644 | ||
645 | + should 'redirect to initial page after logout' do | ||
646 | + login_as :johndoe | ||
647 | + get :logout | ||
648 | + assert_nil session[:user] | ||
649 | + assert_redirected_to :controller => 'home', :action => 'index' | ||
650 | + end | ||
651 | + | ||
647 | protected | 652 | protected |
648 | def new_user(options = {}, extra_options ={}) | 653 | def new_user(options = {}, extra_options ={}) |
649 | data = {:profile_data => person_data} | 654 | data = {:profile_data => person_data} |