Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2018-03-20 20:34:26 +0300
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2018-03-20 20:39:53 +0300
commit97cf5d737d05f841232f962db98ac600299668b0 (patch)
tree665fbde15169c0c2e30a454898e0d29dd5641651 /lib
parentda2191afa0e1bf4e0d1f605df9528800eec91c61 (diff)
Omniauth callbacks moved to methods
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/omniauth_initializer.rb64
1 files changed, 38 insertions, 26 deletions
diff --git a/lib/gitlab/omniauth_initializer.rb b/lib/gitlab/omniauth_initializer.rb
index a2c37444730..1b8ffc8c096 100644
--- a/lib/gitlab/omniauth_initializer.rb
+++ b/lib/gitlab/omniauth_initializer.rb
@@ -27,32 +27,7 @@ module Gitlab
# An Array from the configuration will be expanded.
provider_arguments.concat provider['args']
when Hash
- # Add procs for handling SLO
- if provider['name'] == 'cas3'
- provider['args'][:on_single_sign_out] = lambda do |request|
- ticket = request.params[:session_index]
- raise "Service Ticket not found." unless Gitlab::Auth::OAuth::Session.valid?(:cas3, ticket)
-
- Gitlab::Auth::OAuth::Session.destroy(:cas3, ticket)
- true
- end
- end
-
- if provider['name'] == 'authentiq'
- provider['args'][:remote_sign_out_handler] = lambda do |request|
- authentiq_session = request.params['sid']
- if Gitlab::Auth::OAuth::Session.valid?(:authentiq, authentiq_session)
- Gitlab::Auth::OAuth::Session.destroy(:authentiq, authentiq_session)
- true
- else
- false
- end
- end
- end
-
- if provider['name'] == 'shibboleth'
- provider['args'][:fail_with_empty_uid] = true
- end
+ set_provider_specific_defaults(provider)
# A Hash from the configuration will be passed as is.
provider_arguments << provider['args'].symbolize_keys
@@ -61,5 +36,42 @@ module Gitlab
config.omniauth provider['name'].to_sym, *provider_arguments
end
end
+
+ def set_provider_specific_defaults(provider)
+ # Add procs for handling SLO
+ if provider['name'] == 'cas3'
+ provider['args'][:on_single_sign_out] = cas3_signout_handler
+ end
+
+ if provider['name'] == 'authentiq'
+ provider['args'][:remote_sign_out_handler] = authentiq_signout_handler
+ end
+
+ if provider['name'] == 'shibboleth'
+ provider['args'][:fail_with_empty_uid] = true
+ end
+ end
+
+ def cas3_signout_handler
+ lambda do |request|
+ ticket = request.params[:session_index]
+ raise "Service Ticket not found." unless Gitlab::Auth::OAuth::Session.valid?(:cas3, ticket)
+
+ Gitlab::Auth::OAuth::Session.destroy(:cas3, ticket)
+ true
+ end
+ end
+
+ def authentiq_signout_handler
+ lambda do |request|
+ authentiq_session = request.params['sid']
+ if Gitlab::Auth::OAuth::Session.valid?(:authentiq, authentiq_session)
+ Gitlab::Auth::OAuth::Session.destroy(:authentiq, authentiq_session)
+ true
+ else
+ false
+ end
+ end
+ end
end
end