From 0d77209ea0f13184a8140efeaafa52bc916ec71f Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 12 Sep 2012 18:11:59 -0400 Subject: [PATCH] Be more resilient in the case of missing omniauth settings Should no longer freak out when omniauth settings aren't present in gitlab.yml. People who aren't using it shouldn't even have to put a 'false' entry in their config for it (and probably wouldn't, after an upgrade). --- config/initializers/1_settings.rb | 8 ++++---- lib/gitlab/auth.rb | 6 +++--- spec/lib/auth_spec.rb | 4 +++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 326f5af2755..7a7ca43f1d0 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -121,19 +121,19 @@ class Settings < Settingslogic end def ldap_enabled? - ldap['enabled'] - rescue + ldap && ldap['enabled'] + rescue Settingslogic::MissingSetting false end def omniauth_enabled? omniauth && omniauth['enabled'] - rescue + rescue Settingslogic::MissingSetting false end def omniauth_providers - omniauth['providers'] || [] + (omniauth_enabled? && omniauth['providers']) || [] end def disable_gravatar? diff --git a/lib/gitlab/auth.rb b/lib/gitlab/auth.rb index ef058ff5ed1..90bd5d74081 100644 --- a/lib/gitlab/auth.rb +++ b/lib/gitlab/auth.rb @@ -17,7 +17,7 @@ module Gitlab end end - def create_from_omniauth auth, ldap = false + def create_from_omniauth(auth, ldap = false) provider = auth.provider uid = auth.info.uid || auth.uid name = auth.info.name.force_encoding("utf-8") @@ -39,7 +39,7 @@ module Gitlab password_confirmation: password, projects_limit: Gitlab.config.default_projects_limit, ) - if Gitlab.config.omniauth.block_auto_created_users && !ldap + if Gitlab.config.omniauth['block_auto_created_users'] && !ldap @user.blocked = true end @user.save! @@ -52,7 +52,7 @@ module Gitlab if @user = User.find_by_provider_and_extern_uid(provider, uid) @user else - if Gitlab.config.omniauth.allow_single_sign_on + if Gitlab.config.omniauth['allow_single_sign_on'] @user = create_from_omniauth(auth) @user end diff --git a/spec/lib/auth_spec.rb b/spec/lib/auth_spec.rb index 5faf1307ed2..1e03bc591b4 100644 --- a/spec/lib/auth_spec.rb +++ b/spec/lib/auth_spec.rb @@ -4,6 +4,8 @@ describe Gitlab::Auth do let(:gl_auth) { Gitlab::Auth.new } before do + Gitlab.config.stub(omniauth: {}) + @info = mock( uid: '12djsak321', name: 'John', @@ -64,7 +66,7 @@ describe Gitlab::Auth do end it "should create user if single_sing_on"do - Gitlab.config.omniauth.stub allow_single_sign_on: true + Gitlab.config.omniauth['allow_single_sign_on'] = true User.stub find_by_provider_and_extern_uid: nil gl_auth.should_receive :create_from_omniauth gl_auth.find_or_new_for_omniauth(@auth)