Commit 9028999c933a3db790ef4645474d7b04888a308f
1 parent
0df1cf7f
Exists in
master
and in
4 other branches
Use new OAuth classes
Showing
1 changed file
with
15 additions
and
9 deletions
Show diff stats
app/controllers/omniauth_callbacks_controller.rb
... | ... | @@ -18,33 +18,39 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController |
18 | 18 | def ldap |
19 | 19 | # We only find ourselves here |
20 | 20 | # if the authentication to LDAP was successful. |
21 | - @user = Gitlab::LDAP::User.find_or_create(request.env["omniauth.auth"]) | |
21 | + @user = Gitlab::LDAP::User.find_or_create(oauth) | |
22 | 22 | @user.remember_me = true if @user.persisted? |
23 | - | |
24 | 23 | sign_in_and_redirect(@user) |
25 | 24 | end |
26 | 25 | |
27 | 26 | private |
28 | 27 | |
29 | 28 | def handle_omniauth |
30 | - oauth = request.env['omniauth.auth'] | |
31 | - provider, uid = oauth['provider'], oauth['uid'] | |
32 | - | |
33 | 29 | if current_user |
34 | 30 | # Change a logged-in user's authentication method: |
35 | - current_user.extern_uid = uid | |
36 | - current_user.provider = provider | |
31 | + current_user.extern_uid = oauth['uid'] | |
32 | + current_user.provider = oauth['provider'] | |
37 | 33 | current_user.save |
38 | 34 | redirect_to profile_path |
39 | 35 | else |
40 | - @user = User.find_or_new_for_omniauth(oauth) | |
36 | + @user = Gitlab::OAuth::User.find(oauth) | |
37 | + | |
38 | + # Create user if does not exist | |
39 | + # and allow_single_sign_on is true | |
40 | + if Gitlab.config.omniauth['allow_single_sign_on'] | |
41 | + @user ||= Gitlab::OAuth::User.create(oauth) | |
42 | + end | |
41 | 43 | |
42 | 44 | if @user |
43 | - sign_in_and_redirect @user | |
45 | + sign_in_and_redirect(@user) | |
44 | 46 | else |
45 | 47 | flash[:notice] = "There's no such user!" |
46 | 48 | redirect_to new_user_session_path |
47 | 49 | end |
48 | 50 | end |
49 | 51 | end |
52 | + | |
53 | + def oauth | |
54 | + @oauth ||= request.env['omniauth.auth'] | |
55 | + end | |
50 | 56 | end | ... | ... |