summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2018-03-21 23:25:47 +0000
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2018-03-22 00:24:53 +0000
commit60b480fe814975b508f01bd1ae4f455f3ec454eb (patch)
tree3520b11be1b3a378b09d7c2e88698d4efa48f54e
parent97cf5d737d05f841232f962db98ac600299668b0 (diff)
downloadgitlab-ce-jej/omniauth-initializer-refactor.tar.gz
OmniauthInitializer refactoringjej/omniauth-initializer-refactor
-rw-r--r--lib/gitlab/omniauth_initializer.rb64
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