diff options
author | Achilleas Pipinellis <axilleas@axilleas.me> | 2015-12-25 01:31:02 +0200 |
---|---|---|
committer | Achilleas Pipinellis <axilleas@axilleas.me> | 2015-12-25 01:31:02 +0200 |
commit | d18fd3f6489ad2a8065f8ddd80ca51100eb50b5e (patch) | |
tree | 1e809b9c4f694e20e9cc7dff06a9cb7f2f56aef2 /app/controllers/omniauth_callbacks_controller.rb | |
parent | e74affcfa84acaddc236d6dfed7be1a61470dc0e (diff) | |
parent | 350d65503f0fa34ae397942578c5ea8b2a46a629 (diff) | |
download | gitlab-ce-ci_triggers_docs.tar.gz |
Merge branch 'master' into ci_triggers_docsci_triggers_docs
Diffstat (limited to 'app/controllers/omniauth_callbacks_controller.rb')
-rw-r--r-- | app/controllers/omniauth_callbacks_controller.rb | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/app/controllers/omniauth_callbacks_controller.rb b/app/controllers/omniauth_callbacks_controller.rb index f809fa7500a..4cad98b8e98 100644 --- a/app/controllers/omniauth_callbacks_controller.rb +++ b/app/controllers/omniauth_callbacks_controller.rb @@ -1,6 +1,6 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController - protect_from_forgery except: [:kerberos, :saml] + protect_from_forgery except: [:kerberos, :saml, :cas3] Gitlab.config.omniauth.providers.each do |provider| define_method provider['name'] do @@ -42,6 +42,14 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController render 'errors/omniauth_error', layout: "errors", status: 422 end + def cas3 + ticket = params['ticket'] + if ticket + handle_service_ticket oauth['provider'], ticket + end + handle_omniauth + end + private def handle_omniauth @@ -84,6 +92,12 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController redirect_to new_user_session_path end + def handle_service_ticket provider, ticket + Gitlab::OAuth::Session.create provider, ticket + session[:service_tickets] ||= {} + session[:service_tickets][provider] = ticket + end + def oauth @oauth ||= request.env['omniauth.auth'] end |