diff options
author | James Edwards-Jones <jedwardsjones@gitlab.com> | 2018-03-22 02:25:47 +0300 |
---|---|---|
committer | James Edwards-Jones <jedwardsjones@gitlab.com> | 2018-03-22 03:24:53 +0300 |
commit | 60b480fe814975b508f01bd1ae4f455f3ec454eb (patch) | |
tree | 3520b11be1b3a378b09d7c2e88698d4efa48f54e /lib/gitlab/omniauth_initializer.rb | |
parent | 97cf5d737d05f841232f962db98ac600299668b0 (diff) |
OmniauthInitializer refactoring
Diffstat (limited to 'lib/gitlab/omniauth_initializer.rb')
-rw-r--r-- | lib/gitlab/omniauth_initializer.rb | 64 |
1 files changed, 31 insertions, 33 deletions
diff --git a/lib/gitlab/omniauth_initializer.rb b/lib/gitlab/omniauth_initializer.rb index 1b8ffc8c096..35ed3a5ac05 100644 --- a/lib/gitlab/omniauth_initializer.rb +++ b/lib/gitlab/omniauth_initializer.rb @@ -4,51 +4,49 @@ module Gitlab @devise_config = devise_config end - def config - @devise_config - end - def execute(providers) - initialize_providers(providers) + providers.each do |provider| + add_provider(provider['name'].to_sym, *arguments_for(provider)) + end end private - def initialize_providers(providers) - providers.each do |provider| - provider_arguments = [] - - %w[app_id app_secret].each do |argument| - provider_arguments << provider[argument] if provider[argument] - end - - case provider['args'] - when Array - # An Array from the configuration will be expanded. - provider_arguments.concat provider['args'] - when Hash - set_provider_specific_defaults(provider) + def add_provider(*args) + @devise_config.omniauth(*args) + end - # A Hash from the configuration will be passed as is. - provider_arguments << provider['args'].symbolize_keys - end + def arguments_for(provider) + provider_arguments = [] - config.omniauth provider['name'].to_sym, *provider_arguments + %w[app_id app_secret].each do |argument| + provider_arguments << provider[argument] if provider[argument] 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 + case provider['args'] + when Array + # An Array from the configuration will be expanded. + provider_arguments.concat provider['args'] + when Hash + hash_arguments = provider['args'].merge(provider_defaults(provider)) - if provider['name'] == 'authentiq' - provider['args'][:remote_sign_out_handler] = authentiq_signout_handler + # A Hash from the configuration will be passed as is. + provider_arguments << hash_arguments.symbolize_keys end - if provider['name'] == 'shibboleth' - provider['args'][:fail_with_empty_uid] = true + provider_arguments + end + + def provider_defaults(provider) + case provider['name'] + when 'cas3' + { on_single_sign_out: cas3_signout_handler } + when 'authentiq' + { remote_sign_out_handler: authentiq_signout_handler } + when 'shibboleth' + { fail_with_empty_uid: true } + else + {} end end |