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).
This commit is contained in:
parent
3643df1f7c
commit
0d77209ea0
3 changed files with 10 additions and 8 deletions
|
@ -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?
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue