diff options
author | James Edwards-Jones <jedwardsjones@gitlab.com> | 2018-03-20 17:34:26 +0000 |
---|---|---|
committer | James Edwards-Jones <jedwardsjones@gitlab.com> | 2018-03-20 17:39:53 +0000 |
commit | 97cf5d737d05f841232f962db98ac600299668b0 (patch) | |
tree | 665fbde15169c0c2e30a454898e0d29dd5641651 | |
parent | da2191afa0e1bf4e0d1f605df9528800eec91c61 (diff) | |
download | gitlab-ce-97cf5d737d05f841232f962db98ac600299668b0.tar.gz |
Omniauth callbacks moved to methods
-rw-r--r-- | lib/gitlab/omniauth_initializer.rb | 64 |
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 |