Commit 960a88ff6e1e36499ac8937b494b5bef33942299

Authored by Macartur Sousa
1 parent 77e17681

Fixed swap remote user when logged in gitlab

Showing 1 changed file with 44 additions and 25 deletions   Show diff stats
lib/omniauth/strategies/remote_user.rb
@@ -11,7 +11,7 @@ module OmniAuth @@ -11,7 +11,7 @@ module OmniAuth
11 11
12 def __write_file message 12 def __write_file message
13 file = File.open("/home/git/gitlab/log/remote_user.log",'a') 13 file = File.open("/home/git/gitlab/log/remote_user.log",'a')
14 - file.write message 14 + file.write " \n #{message} \n"
15 file.close 15 file.close
16 end 16 end
17 17
@@ -21,34 +21,56 @@ module OmniAuth @@ -21,34 +21,56 @@ module OmniAuth
21 21
22 remote_user = env['HTTP_REMOTE_USER'] 22 remote_user = env['HTTP_REMOTE_USER']
23 23
24 - __write_file "#{remote_user}\n" 24 + __write_file " ... Aqui esta o remote user #{remote_user}\n"
25 25
26 26
27 session_user = __current_user(env) 27 session_user = __current_user(env)
28 - if remote_user  
29 - if session_user  
30 - if remote_user == session_user  
31 - super(env)  
32 - else  
33 - __login(env, remote_user) || super(env)  
34 - end  
35 - else  
36 - __login(env, remote_user) || super(env)  
37 - end  
38 - else  
39 - if session_user  
40 - __logout(env) || super(env)  
41 - else  
42 - super(env)  
43 - end  
44 - end 28 + __write_file " .....Aqui esta o session user == #{session_user}\n"
  29 +
  30 + if ! is_in_logout? (env)
  31 + if remote_user
  32 + if session_user
  33 + if remote_user == session_user
  34 + __write_file "Entrei no remote_user == session_user"
  35 + super(env)
  36 + else
  37 + __write_file "Entrei no remote_uer != session user com session user "
  38 + __logout(env)
  39 + end
  40 +
  41 + else
  42 + __write_file "Estou sem session+_user= #{session_user}"
  43 + __login(env, remote_user)
  44 + end
  45 +
  46 + else
  47 +
  48 + if session_user
  49 + __write_file "Estou sem remote user e com session user = #{session_user}"
  50 + __logout(env)
  51 + else
  52 + __write_file "Estou sem remote user e sem session user = #{session_user}"
  53 + super(env)
  54 + end
  55 + end
  56 + else
  57 + super env
  58 + end
45 59
  60 +
46 end 61 end
47 62
48 - def __current_user(env)  
49 63
  64 + def is_in_logout? (env)
  65 + request = Rack::Request.new(env)
  66 + __write_file "REQUEST PATH = #{request.path}"
  67 + request.path == '/users/sign_out'
  68 + end
  69 +
  70 + def __current_user(env)
50 __write_file "__CURRENT_USER" 71 __write_file "__CURRENT_USER"
51 request = Rack::Request.new(env) 72 request = Rack::Request.new(env)
  73 + __write_file "REQUEST PATH = #{request.path}"
52 request.cookies.has_key?(options.internal_cookie) && request.cookies[options.internal_cookie] 74 request.cookies.has_key?(options.internal_cookie) && request.cookies[options.internal_cookie]
53 end 75 end
54 76
@@ -59,6 +81,7 @@ module OmniAuth @@ -59,6 +81,7 @@ module OmniAuth
59 if response 81 if response
60 response.delete_cookie(options.cookie) 82 response.delete_cookie(options.cookie)
61 response.delete_cookie(options.internal_cookie) 83 response.delete_cookie(options.internal_cookie)
  84 + response.redirect "/users/sign_out"
62 response 85 response
63 end 86 end
64 end 87 end
@@ -74,7 +97,6 @@ module OmniAuth @@ -74,7 +97,6 @@ module OmniAuth
74 end 97 end
75 98
76 def redirect_if_not_logging_in(request, url) 99 def redirect_if_not_logging_in(request, url)
77 - puts "__redirect_if_not_loggin_in"  
78 100
79 if ! [ 101 if ! [
80 '/users/auth/RemoteUser', 102 '/users/auth/RemoteUser',
@@ -104,10 +126,7 @@ module OmniAuth @@ -104,10 +126,7 @@ module OmniAuth
104 126
105 def request_phase 127 def request_phase
106 __write_file "request phase\n" 128 __write_file "request phase\n"
107 -  
108 - form = OmniAuth::Form.new(:url => "RemoteUser/callback")  
109 - form.html '<script type="text/javascript"> document.forms[0].submit(); </script>'  
110 - form.to_response 129 + redirect "/users/auth/RemoteUser/callback"
111 end 130 end
112 end 131 end
113 end 132 end