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).
3-1-stable
Robert Speicher 2012-09-12 18:11:59 -04:00
parent 3643df1f7c
commit 0d77209ea0
3 changed files with 10 additions and 8 deletions

View File

@ -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?

View File

@ -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

View File

@ -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)