Merge pull request #1451 from tsigo/omniauth_settings
Be more resilient in the case of missing omniauth settings
This commit is contained in:
commit
85def2d625
3 changed files with 10 additions and 8 deletions
|
@ -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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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…
Add table
Reference in a new issue