Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-09-04 01:06:29 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-09-04 01:06:29 +0400
commit9028999c933a3db790ef4645474d7b04888a308f (patch)
tree142c72e437a8c1c9aa664c7aa17a15ff1540310f /app/controllers/omniauth_callbacks_controller.rb
parent0df1cf7fcceee10db1e66ecf99dcd453d9e687a4 (diff)
Use new OAuth classes
Diffstat (limited to 'app/controllers/omniauth_callbacks_controller.rb')
-rw-r--r--app/controllers/omniauth_callbacks_controller.rb24
1 files changed, 15 insertions, 9 deletions
diff --git a/app/controllers/omniauth_callbacks_controller.rb b/app/controllers/omniauth_callbacks_controller.rb
index b0765672dda..7131e0fe181 100644
--- a/app/controllers/omniauth_callbacks_controller.rb
+++ b/app/controllers/omniauth_callbacks_controller.rb
@@ -18,33 +18,39 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def ldap
# We only find ourselves here
# if the authentication to LDAP was successful.
- @user = Gitlab::LDAP::User.find_or_create(request.env["omniauth.auth"])
+ @user = Gitlab::LDAP::User.find_or_create(oauth)
@user.remember_me = true if @user.persisted?
-
sign_in_and_redirect(@user)
end
private
def handle_omniauth
- oauth = request.env['omniauth.auth']
- provider, uid = oauth['provider'], oauth['uid']
-
if current_user
# Change a logged-in user's authentication method:
- current_user.extern_uid = uid
- current_user.provider = provider
+ current_user.extern_uid = oauth['uid']
+ current_user.provider = oauth['provider']
current_user.save
redirect_to profile_path
else
- @user = User.find_or_new_for_omniauth(oauth)
+ @user = Gitlab::OAuth::User.find(oauth)
+
+ # Create user if does not exist
+ # and allow_single_sign_on is true
+ if Gitlab.config.omniauth['allow_single_sign_on']
+ @user ||= Gitlab::OAuth::User.create(oauth)
+ end
if @user
- sign_in_and_redirect @user
+ sign_in_and_redirect(@user)
else
flash[:notice] = "There's no such user!"
redirect_to new_user_session_path
end
end
end
+
+ def oauth
+ @oauth ||= request.env['omniauth.auth']
+ end
end