Skip to content
Snippets Groups Projects
Commit 0d77209e authored by Robert Speicher's avatar Robert Speicher
Browse files

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
No related branches found
No related tags found
1 merge request!1451Be more resilient in the case of missing omniauth settings
Loading
@@ -121,19 +121,19 @@ class Settings < Settingslogic
Loading
@@ -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?
Loading
Loading
Loading
@@ -17,7 +17,7 @@ module Gitlab
Loading
@@ -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")
Loading
@@ -39,7 +39,7 @@ module Gitlab
Loading
@@ -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!
Loading
@@ -52,7 +52,7 @@ module Gitlab
Loading
@@ -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
Loading
Loading
Loading
@@ -4,6 +4,8 @@ describe Gitlab::Auth do
Loading
@@ -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',
Loading
@@ -64,7 +66,7 @@ describe Gitlab::Auth do
Loading
@@ -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)
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment