summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-09-04 13:49:03 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-09-04 13:49:03 +0000
commit496ec8b26d2147f1b14c41cc17d2224a7d8c0898 (patch)
treec87b0ef60e080623fbdd62e2332c74a8db0a7f41 /app/controllers
parent38cebe03bcd49895332401e5103925754ab7db85 (diff)
parent8e238f42732e5968dc46e3f08d853d0f3c9b2760 (diff)
downloadgitlab-ce-496ec8b26d2147f1b14c41cc17d2224a7d8c0898.tar.gz
Merge branch 'refactor/oauth' of /home/git/repositories/gitlab/gitlabhq
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/omniauth_callbacks_controller.rb32
-rw-r--r--app/controllers/registrations_controller.rb3
2 files changed, 19 insertions, 16 deletions
diff --git a/app/controllers/omniauth_callbacks_controller.rb b/app/controllers/omniauth_callbacks_controller.rb
index c4ebf0e4889..7131e0fe181 100644
--- a/app/controllers/omniauth_callbacks_controller.rb
+++ b/app/controllers/omniauth_callbacks_controller.rb
@@ -16,35 +16,41 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
end
def ldap
- # We only find ourselves here if the authentication to LDAP was successful.
- @user = User.find_for_ldap_auth(request.env["omniauth.auth"], current_user)
- if @user.persisted?
- @user.remember_me = true
- end
- sign_in_and_redirect @user
+ # We only find ourselves here
+ # if the authentication to LDAP was successful.
+ @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
diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb
index 194dfcd4122..5f18bac82ed 100644
--- a/app/controllers/registrations_controller.rb
+++ b/app/controllers/registrations_controller.rb
@@ -2,9 +2,6 @@ class RegistrationsController < Devise::RegistrationsController
before_filter :signup_enabled?
def destroy
- if current_user.owned_projects.count > 0
- redirect_to account_profile_path, alert: "Remove projects and groups before removing account." and return
- end
current_user.destroy
respond_to do |format|