summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2012-09-12 18:11:59 -0400
committerRobert Speicher <rspeicher@gmail.com>2012-09-12 18:11:59 -0400
commit0d77209ea0f13184a8140efeaafa52bc916ec71f (patch)
treeed0bb189f402a2603edfdaac6f95b5c6c1e1a606
parent3643df1f7cbcc3734055b0d710fd21dd4426ca3b (diff)
downloadgitlab-ce-0d77209ea0f13184a8140efeaafa52bc916ec71f.tar.gz
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).
-rw-r--r--config/initializers/1_settings.rb8
-rw-r--r--lib/gitlab/auth.rb6
-rw-r--r--spec/lib/auth_spec.rb4
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)