diff options
author | Alex Lossent <alexandre.lossent@cern.ch> | 2015-08-12 17:20:01 +0200 |
---|---|---|
committer | Alex Lossent <alexandre.lossent@cern.ch> | 2015-08-12 17:31:35 +0200 |
commit | fb6e8008c4010aa5445b129e5b18e379a0ef487e (patch) | |
tree | b02a83c7bfc51bbeb3307ce9a10659044dae4313 /app | |
parent | cd579cb2ff45f3fc1513bb6ea74b53a2229276ae (diff) | |
download | gitlab-ce-fb6e8008c4010aa5445b129e5b18e379a0ef487e.tar.gz |
Fix redirection after sign in when using auto_sign_in_with_provider
Logic for redirect path moved to a filter.
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/sessions_controller.rb | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 796cbe4c58c..8389f07a3bd 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -2,27 +2,10 @@ class SessionsController < Devise::SessionsController include AuthenticatesWithTwoFactor prepend_before_action :authenticate_with_two_factor, only: [:create] + prepend_before_action :store_redirect_path, only: [:new] before_action :auto_sign_in_with_provider, only: [:new] def new - redirect_path = - if request.referer.present? && (params['redirect_to_referer'] == 'yes') - referer_uri = URI(request.referer) - if referer_uri.host == Gitlab.config.gitlab.host - referer_uri.path - else - request.fullpath - end - else - request.fullpath - end - - # Prevent a 'you are already signed in' message directly after signing: - # we should never redirect to '/users/sign_in' after signing in successfully. - unless redirect_path == new_user_session_path - store_location_for(:redirect, redirect_path) - end - if Gitlab.config.ldap.enabled @ldap_servers = Gitlab::LDAP::Config.servers end @@ -55,6 +38,26 @@ class SessionsController < Devise::SessionsController User.find(session[:otp_user_id]) end end + + def store_redirect_path + redirect_path = + if request.referer.present? && (params['redirect_to_referer'] == 'yes') + referer_uri = URI(request.referer) + if referer_uri.host == Gitlab.config.gitlab.host + referer_uri.path + else + request.fullpath + end + else + request.fullpath + end + + # Prevent a 'you are already signed in' message directly after signing: + # we should never redirect to '/users/sign_in' after signing in successfully. + unless redirect_path == new_user_session_path + store_location_for(:redirect, redirect_path) + end + end def authenticate_with_two_factor user = self.resource = find_user |