summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJan-Willem van der Meer <mail@jewilmeer.nl>2014-10-16 20:08:30 +0200
committerJan-Willem van der Meer <mail@jewilmeer.nl>2014-10-16 20:08:30 +0200
commitd9bfebc0e87ef426aea7eb4fdd1338f04b106354 (patch)
tree94727a80af60c0c55c9fcf38250bbd4fd762da13 /lib
parentfad588f2bee102bf4ab090874d041e227d4e2ee4 (diff)
downloadgitlab-ce-d9bfebc0e87ef426aea7eb4fdd1338f04b106354.tar.gz
Add regressiontest to verify allow_single_sign_on setting
verification for #1677 Since testing omniauth_callback_controller.rb is very difficult, the logic is moved to the models
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/oauth/user.rb17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/gitlab/oauth/user.rb b/lib/gitlab/oauth/user.rb
index 133445d3d05..18ec63a62a2 100644
--- a/lib/gitlab/oauth/user.rb
+++ b/lib/gitlab/oauth/user.rb
@@ -13,7 +13,7 @@ module Gitlab
end
def persisted?
- gl_user.persisted?
+ gl_user.try(:persisted?)
end
def new?
@@ -21,10 +21,12 @@ module Gitlab
end
def valid?
- gl_user.valid?
+ gl_user.try(:valid?)
end
def save
+ unauthorized_to_create unless gl_user
+
gl_user.save!
log.info "(OAuth) saving user #{auth_hash.email} from login with extern_uid => #{auth_hash.uid}"
gl_user.block if needs_blocking?
@@ -36,7 +38,12 @@ module Gitlab
end
def gl_user
- @user ||= find_by_uid_and_provider || build_new_user
+ @user ||= find_by_uid_and_provider
+
+ if Gitlab.config.omniauth.allow_single_sign_on
+ @user ||= build_new_user
+ end
+ @user
end
protected
@@ -77,6 +84,10 @@ module Gitlab
def model
::User
end
+
+ def raise_unauthorized_to_create
+ raise StandardError.new("Unauthorized to create user, signup disabled for #{auth_hash.provider}")
+ end
end
end
end