Commit 0d77209e authored by Robert Speicher's avatar Robert Speicher

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).
parent 3643df1f
...@@ -121,19 +121,19 @@ class Settings < Settingslogic ...@@ -121,19 +121,19 @@ class Settings < Settingslogic
end end
def ldap_enabled? def ldap_enabled?
ldap['enabled'] ldap && ldap['enabled']
rescue rescue Settingslogic::MissingSetting
false false
end end
def omniauth_enabled? def omniauth_enabled?
omniauth && omniauth['enabled'] omniauth && omniauth['enabled']
rescue rescue Settingslogic::MissingSetting
false false
end end
def omniauth_providers def omniauth_providers
omniauth['providers'] || [] (omniauth_enabled? && omniauth['providers']) || []
end end
def disable_gravatar? def disable_gravatar?
......
...@@ -17,7 +17,7 @@ module Gitlab ...@@ -17,7 +17,7 @@ module Gitlab
end end
end end
def create_from_omniauth auth, ldap = false def create_from_omniauth(auth, ldap = false)
provider = auth.provider provider = auth.provider
uid = auth.info.uid || auth.uid uid = auth.info.uid || auth.uid
name = auth.info.name.force_encoding("utf-8") name = auth.info.name.force_encoding("utf-8")
...@@ -39,7 +39,7 @@ module Gitlab ...@@ -39,7 +39,7 @@ module Gitlab
password_confirmation: password, password_confirmation: password,
projects_limit: Gitlab.config.default_projects_limit, 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 @user.blocked = true
end end
@user.save! @user.save!
...@@ -52,7 +52,7 @@ module Gitlab ...@@ -52,7 +52,7 @@ module Gitlab
if @user = User.find_by_provider_and_extern_uid(provider, uid) if @user = User.find_by_provider_and_extern_uid(provider, uid)
@user @user
else else
if Gitlab.config.omniauth.allow_single_sign_on if Gitlab.config.omniauth['allow_single_sign_on']
@user = create_from_omniauth(auth) @user = create_from_omniauth(auth)
@user @user
end end
......
...@@ -4,6 +4,8 @@ describe Gitlab::Auth do ...@@ -4,6 +4,8 @@ describe Gitlab::Auth do
let(:gl_auth) { Gitlab::Auth.new } let(:gl_auth) { Gitlab::Auth.new }
before do before do
Gitlab.config.stub(omniauth: {})
@info = mock( @info = mock(
uid: '12djsak321', uid: '12djsak321',
name: 'John', name: 'John',
...@@ -64,7 +66,7 @@ describe Gitlab::Auth do ...@@ -64,7 +66,7 @@ describe Gitlab::Auth do
end end
it "should create user if single_sing_on"do 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 User.stub find_by_provider_and_extern_uid: nil
gl_auth.should_receive :create_from_omniauth gl_auth.should_receive :create_from_omniauth
gl_auth.find_or_new_for_omniauth(@auth) gl_auth.find_or_new_for_omniauth(@auth)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment