Commit 66759458fb2d0a3215fc280deadc4f4fee1e59cb
1 parent
d354a1df
Exists in
master
and in
22 other branches
URL parameter to redirect after login
Showing
2 changed files
with
13 additions
and
4 deletions
Show diff stats
app/controllers/public/account_controller.rb
| ... | ... | @@ -26,7 +26,8 @@ class AccountController < ApplicationController |
| 26 | 26 | |
| 27 | 27 | # action to perform login to the application |
| 28 | 28 | def login |
| 29 | - store_location(request.referer) unless session[:return_to] | |
| 29 | + store_location(request.referer) unless params[:return_to] or session[:return_to] | |
| 30 | + | |
| 30 | 31 | return unless request.post? |
| 31 | 32 | |
| 32 | 33 | self.current_user = plugins_alternative_authentication |
| ... | ... | @@ -125,7 +126,7 @@ class AccountController < ApplicationController |
| 125 | 126 | def change_password |
| 126 | 127 | if request.post? |
| 127 | 128 | @user = current_user |
| 128 | - begin | |
| 129 | + begin | |
| 129 | 130 | @user.change_password!(params[:current_password], |
| 130 | 131 | params[:new_password], |
| 131 | 132 | params[:new_password_confirmation]) |
| ... | ... | @@ -218,7 +219,7 @@ class AccountController < ApplicationController |
| 218 | 219 | @question = @enterprise.question |
| 219 | 220 | return unless check_answer |
| 220 | 221 | return unless check_acceptance_of_terms |
| 221 | - | |
| 222 | + | |
| 222 | 223 | activation = load_enterprise_activation |
| 223 | 224 | if activation && user |
| 224 | 225 | activation.requestor = user |
| ... | ... | @@ -355,7 +356,9 @@ class AccountController < ApplicationController |
| 355 | 356 | end |
| 356 | 357 | |
| 357 | 358 | def go_to_initial_page |
| 358 | - if environment.enabled?('allow_change_of_redirection_after_login') | |
| 359 | + if params[:return_to] | |
| 360 | + redirect_to params[:return_to] | |
| 361 | + elsif environment.enabled?('allow_change_of_redirection_after_login') | |
| 359 | 362 | case user.preferred_login_redirection |
| 360 | 363 | when 'keep_on_same_page' |
| 361 | 364 | redirect_back_or_default(user.admin_url) | ... | ... |
test/functional/account_controller_test.rb
| ... | ... | @@ -224,6 +224,12 @@ class AccountControllerTest < ActionController::TestCase |
| 224 | 224 | assert_template 'password_recovery_sent' |
| 225 | 225 | end |
| 226 | 226 | |
| 227 | + should 'use redirect_to parameter on successful login' do | |
| 228 | + url = 'http://kernel.org' | |
| 229 | + post :login, :return_to => url, :user => {:login => 'ze', :password => 'test'} | |
| 230 | + assert_redirected_to url | |
| 231 | + end | |
| 232 | + | |
| 227 | 233 | should 'provide interface for entering new password' do |
| 228 | 234 | change = ChangePassword.new |
| 229 | 235 | ChangePassword.expects(:find_by_code).with('osidufgiashfkjsadfhkj99999').returns(change) | ... | ... |