diff options
author | Stan Hu <stanhu@gmail.com> | 2017-10-02 23:28:22 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2017-10-04 11:47:36 -0700 |
commit | 5d52bb59dc632601f4028b430deae7348c5e279b (patch) | |
tree | c183ffd1755c4c9e4b784d07e4437664cf4b8129 /app/controllers | |
parent | aaa57c9d35b1eb744fca970263220850db06639f (diff) | |
download | gitlab-ce-5d52bb59dc632601f4028b430deae7348c5e279b.tar.gz |
Fix username and ID not logging in production_json.log for Git activitysh-fix-username-logging
Devise sets `current_user`, but not all controllers authenticate users by
session tokens. Try to use the controller-defined `authenticated_user` if
`current_user` is not available.
Closes gitlab-org/gitlab-ee#3611
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/application_controller.rb | 15 | ||||
-rw-r--r-- | app/controllers/projects/git_http_client_controller.rb | 1 |
2 files changed, 13 insertions, 3 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 771c6f3034a..967fe39256a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -85,12 +85,21 @@ class ApplicationController < ActionController::Base super payload[:remote_ip] = request.remote_ip - if current_user.present? - payload[:user_id] = current_user.id - payload[:username] = current_user.username + logged_user = auth_user + + if logged_user.present? + payload[:user_id] = logged_user.try(:id) + payload[:username] = logged_user.try(:username) end end + # Controllers such as GitHttpController may use alternative methods + # (e.g. tokens) to authenticate the user, whereas Devise sets current_user + def auth_user + return current_user if current_user.present? + return try(:authenticated_user) + end + # This filter handles both private tokens and personal access tokens def authenticate_user_from_private_token! token = params[:private_token].presence || request.headers['PRIVATE-TOKEN'].presence diff --git a/app/controllers/projects/git_http_client_controller.rb b/app/controllers/projects/git_http_client_controller.rb index 7d0e2b3e2ef..95d7a02e9e9 100644 --- a/app/controllers/projects/git_http_client_controller.rb +++ b/app/controllers/projects/git_http_client_controller.rb @@ -9,6 +9,7 @@ class Projects::GitHttpClientController < Projects::ApplicationController delegate :actor, :authentication_abilities, to: :authentication_result, allow_nil: true alias_method :user, :actor + alias_method :authenticated_user, :actor # Git clients will not know what authenticity token to send along skip_before_action :verify_authenticity_token |