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 | 17 | def login |
| 18 | 18 | @user = User.new |
| 19 | 19 | @person = @user.build_person |
| 20 | + store_location(request.referer) | |
| 20 | 21 | return unless request.post? |
| 21 | 22 | self.current_user = User.authenticate(params[:user][:login], params[:user][:password]) if params[:user] |
| 22 | 23 | if logged_in? |
| ... | ... | @@ -24,8 +25,10 @@ class AccountController < ApplicationController |
| 24 | 25 | self.current_user.remember_me |
| 25 | 26 | cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } |
| 26 | 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 | 32 | else |
| 30 | 33 | flash[:notice] = _('Incorrect username or password') if redirect? |
| 31 | 34 | redirect_to :back if redirect? |
| ... | ... | @@ -70,7 +73,7 @@ class AccountController < ApplicationController |
| 70 | 73 | redirect_to :controller => 'search', :action => 'assets', :asset => 'communities', :wizard => true |
| 71 | 74 | return |
| 72 | 75 | else |
| 73 | - go_to_user_initial_page if redirect? | |
| 76 | + go_to_initial_page if redirect? | |
| 74 | 77 | end |
| 75 | 78 | end |
| 76 | 79 | if @wizard |
| ... | ... | @@ -105,7 +108,7 @@ class AccountController < ApplicationController |
| 105 | 108 | cookies.delete :auth_token |
| 106 | 109 | reset_session |
| 107 | 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 | 112 | end |
| 110 | 113 | |
| 111 | 114 | def change_password |
| ... | ... | @@ -280,12 +283,11 @@ class AccountController < ApplicationController |
| 280 | 283 | params[:answer] == enterprise.send(enterprise.question).to_s |
| 281 | 284 | end |
| 282 | 285 | |
| 283 | - def go_to_user_initial_page | |
| 286 | + def go_to_initial_page | |
| 284 | 287 | if environment == current_user.environment |
| 285 | 288 | redirect_back_or_default(user.admin_url) |
| 286 | 289 | else |
| 287 | 290 | redirect_back_or_default(:controller => 'home') |
| 288 | 291 | end |
| 289 | 292 | end |
| 290 | - | |
| 291 | 293 | end | ... | ... |
test/functional/account_controller_test.rb
| ... | ... | @@ -33,21 +33,24 @@ class AccountControllerTest < Test::Unit::TestCase |
| 33 | 33 | assert_response :redirect |
| 34 | 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 | 38 | u = new_user |
| 38 | 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 | 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 | 45 | e = Environment.create!(:name => 'other_environment') |
| 45 | 46 | e.domains << Domain.new(:name => 'other.environment') |
| 46 | 47 | e.save! |
| 47 | 48 | u = create_user('test_user', :environment => e).person |
| 49 | + | |
| 50 | + @request.env["HTTP_REFERER"] = '/bli' | |
| 48 | 51 | post :login, :user => {:login => 'test_user', :password => 'test_user'} |
| 49 | 52 | |
| 50 | - assert_redirected_to :controller => 'home' | |
| 53 | + assert_redirected_to '/bli' | |
| 51 | 54 | end |
| 52 | 55 | |
| 53 | 56 | def test_should_fail_login_and_not_redirect |
| ... | ... | @@ -120,6 +123,7 @@ class AccountControllerTest < Test::Unit::TestCase |
| 120 | 123 | end |
| 121 | 124 | |
| 122 | 125 | def test_should_remember_me |
| 126 | + @request.env["HTTP_REFERER"] = '/bli' | |
| 123 | 127 | post :login, :user => {:login => 'johndoe', :password => 'test'}, :remember_me => "1" |
| 124 | 128 | assert_not_nil @response.cookies["auth_token"] |
| 125 | 129 | end |
| ... | ... | @@ -284,12 +288,6 @@ class AccountControllerTest < Test::Unit::TestCase |
| 284 | 288 | end |
| 285 | 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 | 291 | should 'signup from wizard' do |
| 294 | 292 | assert_difference User, :count do |
| 295 | 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 | 642 | assert_equal 'example.com', Person['testuser'].organization |
| 645 | 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 | 652 | protected |
| 648 | 653 | def new_user(options = {}, extra_options ={}) |
| 649 | 654 | data = {:profile_data => person_data} | ... | ... |