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
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-03-10 06:08:56 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-03-10 06:08:56 +0300
commit981fb44c366ced582da203cf6970ee225466036b (patch)
tree9561f23bca3789e6d8bdf0151864ca5555753653 /lib/gitlab/omniauth_initializer.rb
parent237ead18b945830ed60ac1b4382a4431d66818a6 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/omniauth_initializer.rb')
-rw-r--r--lib/gitlab/omniauth_initializer.rb26
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/gitlab/omniauth_initializer.rb b/lib/gitlab/omniauth_initializer.rb
index a9ff186c7cb..f4984e11c14 100644
--- a/lib/gitlab/omniauth_initializer.rb
+++ b/lib/gitlab/omniauth_initializer.rb
@@ -3,6 +3,7 @@
module Gitlab
class OmniauthInitializer
OAUTH2_TIMEOUT_SECONDS = 10
+ ConfigurationError = Class.new(StandardError)
def initialize(devise_config)
@devise_config = devise_config
@@ -75,16 +76,29 @@ module Gitlab
provider_arguments << provider[argument] if provider[argument]
end
- case provider['args']
+ arguments = provider.fetch('args', {})
+ defaults = provider_defaults(provider)
+
+ case arguments
when Array
- # An Array from the configuration will be expanded.
- provider_arguments.concat provider['args']
+ # An Array from the configuration will be expanded
+ provider_arguments.concat arguments
+ provider_arguments << defaults unless defaults.empty?
when Hash
- defaults = provider_defaults(provider)
- hash_arguments = provider['args'].deep_symbolize_keys.deep_merge(defaults)
+ hash_arguments = arguments.deep_symbolize_keys.deep_merge(defaults)
+ normalized = normalize_hash_arguments(hash_arguments)
# A Hash from the configuration will be passed as is.
- provider_arguments << normalize_hash_arguments(hash_arguments)
+ provider_arguments << normalized unless normalized.empty?
+ else
+ # this will prevent the application from starting in development mode.
+ # we still set defaults, and let the application start in prod.
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(
+ ConfigurationError.new("Arguments were provided for #{provider['name']}, but not as an array or a hash"),
+ provider_name: provider['name'],
+ arguments_type: arguments.class.name
+ )
+ provider_arguments << defaults unless defaults.empty?
end
provider_arguments