Commit 85def2d62500afdab39956f0bd987340889894c4

Authored by Dmitriy Zaporozhets
2 parents 3643df1f 0d77209e

Merge pull request #1451 from tsigo/omniauth_settings

Be more resilient in the case of missing omniauth settings
config/initializers/1_settings.rb
... ... @@ -121,19 +121,19 @@ class Settings < Settingslogic
121 121 end
122 122  
123 123 def ldap_enabled?
124   - ldap['enabled']
125   - rescue
  124 + ldap && ldap['enabled']
  125 + rescue Settingslogic::MissingSetting
126 126 false
127 127 end
128 128  
129 129 def omniauth_enabled?
130 130 omniauth && omniauth['enabled']
131   - rescue
  131 + rescue Settingslogic::MissingSetting
132 132 false
133 133 end
134 134  
135 135 def omniauth_providers
136   - omniauth['providers'] || []
  136 + (omniauth_enabled? && omniauth['providers']) || []
137 137 end
138 138  
139 139 def disable_gravatar?
... ...
lib/gitlab/auth.rb
... ... @@ -17,7 +17,7 @@ module Gitlab
17 17 end
18 18 end
19 19  
20   - def create_from_omniauth auth, ldap = false
  20 + def create_from_omniauth(auth, ldap = false)
21 21 provider = auth.provider
22 22 uid = auth.info.uid || auth.uid
23 23 name = auth.info.name.force_encoding("utf-8")
... ... @@ -39,7 +39,7 @@ module Gitlab
39 39 password_confirmation: password,
40 40 projects_limit: Gitlab.config.default_projects_limit,
41 41 )
42   - if Gitlab.config.omniauth.block_auto_created_users && !ldap
  42 + if Gitlab.config.omniauth['block_auto_created_users'] && !ldap
43 43 @user.blocked = true
44 44 end
45 45 @user.save!
... ... @@ -52,7 +52,7 @@ module Gitlab
52 52 if @user = User.find_by_provider_and_extern_uid(provider, uid)
53 53 @user
54 54 else
55   - if Gitlab.config.omniauth.allow_single_sign_on
  55 + if Gitlab.config.omniauth['allow_single_sign_on']
56 56 @user = create_from_omniauth(auth)
57 57 @user
58 58 end
... ...
spec/lib/auth_spec.rb
... ... @@ -4,6 +4,8 @@ describe Gitlab::Auth do
4 4 let(:gl_auth) { Gitlab::Auth.new }
5 5  
6 6 before do
  7 + Gitlab.config.stub(omniauth: {})
  8 +
7 9 @info = mock(
8 10 uid: '12djsak321',
9 11 name: 'John',
... ... @@ -64,7 +66,7 @@ describe Gitlab::Auth do
64 66 end
65 67  
66 68 it "should create user if single_sing_on"do
67   - Gitlab.config.omniauth.stub allow_single_sign_on: true
  69 + Gitlab.config.omniauth['allow_single_sign_on'] = true
68 70 User.stub find_by_provider_and_extern_uid: nil
69 71 gl_auth.should_receive :create_from_omniauth
70 72 gl_auth.find_or_new_for_omniauth(@auth)
... ...