Commit ab6b7dd95df37edce19a4e615068c1d87a8c4496
Committed by
Antonio Terceiro
1 parent
c5c14f9a
Exists in
master
and in
28 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} | ... | ... |