diff --git a/app/controllers/public/account_controller.rb b/app/controllers/public/account_controller.rb index d037938..6f3a5da 100644 --- a/app/controllers/public/account_controller.rb +++ b/app/controllers/public/account_controller.rb @@ -17,6 +17,7 @@ class AccountController < ApplicationController def login @user = User.new @person = @user.build_person + store_location(request.referer) return unless request.post? self.current_user = User.authenticate(params[:user][:login], params[:user][:password]) if params[:user] if logged_in? @@ -24,8 +25,10 @@ class AccountController < ApplicationController self.current_user.remember_me cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } end - go_to_user_initial_page if redirect? - flash[:notice] = _("Logged in successfully") if redirect? + if redirect? + go_to_initial_page + flash[:notice] = _("Logged in successfully") + end else flash[:notice] = _('Incorrect username or password') if redirect? redirect_to :back if redirect? @@ -70,7 +73,7 @@ class AccountController < ApplicationController redirect_to :controller => 'search', :action => 'assets', :asset => 'communities', :wizard => true return else - go_to_user_initial_page if redirect? + go_to_initial_page if redirect? end end if @wizard @@ -105,7 +108,7 @@ class AccountController < ApplicationController cookies.delete :auth_token reset_session flash[:notice] = _("You have been logged out.") - redirect_back_or_default(:controller => 'account', :action => 'index') + redirect_to :controller => 'home', :action => 'index' end def change_password @@ -280,12 +283,11 @@ class AccountController < ApplicationController params[:answer] == enterprise.send(enterprise.question).to_s end - def go_to_user_initial_page + def go_to_initial_page if environment == current_user.environment redirect_back_or_default(user.admin_url) else redirect_back_or_default(:controller => 'home') end end - end diff --git a/test/functional/account_controller_test.rb b/test/functional/account_controller_test.rb index 2ddef48..c47d588 100644 --- a/test/functional/account_controller_test.rb +++ b/test/functional/account_controller_test.rb @@ -33,21 +33,24 @@ class AccountControllerTest < Test::Unit::TestCase assert_response :redirect end - should 'redirect to user control panel on login' do + should 'redirect to where user was on login' do + @request.env["HTTP_REFERER"] = '/bli' u = new_user post :login, :user => {:login => 'quire', :password => 'quire'} - assert_redirected_to :controller => 'profile_editor', :action => 'index', :profile => 'quire' + assert_redirected_to '/bli' end - should 'redirect to home when login on other environment' do + should 'redirect to where was when login on other environment' do e = Environment.create!(:name => 'other_environment') e.domains << Domain.new(:name => 'other.environment') e.save! u = create_user('test_user', :environment => e).person + + @request.env["HTTP_REFERER"] = '/bli' post :login, :user => {:login => 'test_user', :password => 'test_user'} - assert_redirected_to :controller => 'home' + assert_redirected_to '/bli' end def test_should_fail_login_and_not_redirect @@ -120,6 +123,7 @@ class AccountControllerTest < Test::Unit::TestCase end def test_should_remember_me + @request.env["HTTP_REFERER"] = '/bli' post :login, :user => {:login => 'johndoe', :password => 'test'}, :remember_me => "1" assert_not_nil @response.cookies["auth_token"] end @@ -284,12 +288,6 @@ class AccountControllerTest < Test::Unit::TestCase end end - should 'correct redirect after login' do - user = create_user('correct_redirect').person - post :login, :user => {:login => 'correct_redirect', :password => 'correct_redirect'} - assert_redirected_to :controller => 'profile_editor' - end - should 'signup from wizard' do assert_difference User, :count do 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 assert_equal 'example.com', Person['testuser'].organization end + should 'redirect to initial page after logout' do + login_as :johndoe + get :logout + assert_nil session[:user] + assert_redirected_to :controller => 'home', :action => 'index' + end + protected def new_user(options = {}, extra_options ={}) data = {:profile_data => person_data} -- libgit2 0.21.2