diff --git a/lib/omniauth/strategies/remote_user.rb b/lib/omniauth/strategies/remote_user.rb index 9b2aa60..24546de 100644 --- a/lib/omniauth/strategies/remote_user.rb +++ b/lib/omniauth/strategies/remote_user.rb @@ -3,17 +3,21 @@ module OmniAuth class RemoteUser include OmniAuth::Strategy - def validate_remote_user - if !env['HTTP_REMOTE_USER'].blank? - env['HTTP_REMOTE_USER'] - else - env['HTTP_X_FORWARDED_USER'] + def call(env) + request = Rack::Request.new env + cookies = request.cookies + response = Rack::Response.new + + if cookies['gitlab_session'] != nil and !env['HTTP_REMOTE_USER'].blank? + response.redirect "#{OmniAuth.config.path_prefix}/users/auth/env/" end + + super(env) end def request_phase @user_data = {} - @uid = validate_remote_user + @uid = env return fail!(:no_remote_user) unless @uid @user_data[:name] = @uid['NAME'] @@ -26,9 +30,15 @@ module OmniAuth call_app! end - uid { @uid['EMAIL'] } + uid { @uid['NAME'] } info{ @user_data } - end + def callback_phase + fail(:invalid_request) + end + + def auth_hash + Omniauth::Utils.deep_merge(super, {'uid' => @uid}) + end end end -- libgit2 0.21.2