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} |