Commit ab6b7dd95df37edce19a4e615068c1d87a8c4496

Authored by Daniela Feitosa
Committed by Antonio Terceiro
1 parent c5c14f9a

ActionItem1203: where to go after login/logout

  * after login: the same place the user was before
  * after logout: the site root (/)
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 &lt; Test::Unit::TestCase @@ -120,6 +123,7 @@ class AccountControllerTest &lt; 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 &lt; Test::Unit::TestCase @@ -284,12 +288,6 @@ class AccountControllerTest &lt; 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 &lt; Test::Unit::TestCase @@ -644,6 +642,13 @@ class AccountControllerTest &lt; 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}