diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2021-01-28 01:46:35 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-27 18:46:35 +0100 |
commit | a51cc6dea41b154b946e982fde6cc1a600210a71 (patch) | |
tree | 07e9f38a2f3572bb8ed9a666d33dd30e976bd5e6 /modules/context/context.go | |
parent | 4c6e0295069a3c2f0df3d9f30560906bc2aa73a8 (diff) | |
download | gitea-a51cc6dea41b154b946e982fde6cc1a600210a71.tar.gz gitea-a51cc6dea41b154b946e982fde6cc1a600210a71.zip |
Fix access log (#14475)
Fix #14121, #14478.
The `AccessLog` middleware has to be after `Contexter` or `APIContexter` so that we can get `LoginUserName` if possible.
And also there is a **BREAK** change that it removed internal API access log.
Diffstat (limited to 'modules/context/context.go')
-rw-r--r-- | modules/context/context.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/modules/context/context.go b/modules/context/context.go index e5025205c9..d02339d5b0 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -485,6 +485,31 @@ func GetContext(req *http.Request) *Context { return req.Context().Value(contextKey).(*Context) } +// SignedUserName returns signed user's name via context +func SignedUserName(req *http.Request) string { + if middlewares.IsInternalPath(req) { + return "" + } + if middlewares.IsAPIPath(req) { + ctx, ok := req.Context().Value(apiContextKey).(*APIContext) + if ok { + v := ctx.Data["SignedUserName"] + if res, ok := v.(string); ok { + return res + } + } + } else { + ctx, ok := req.Context().Value(contextKey).(*Context) + if ok { + v := ctx.Data["SignedUserName"] + if res, ok := v.(string); ok { + return res + } + } + } + return "" +} + func getCsrfOpts() CsrfOptions { return CsrfOptions{ Secret: setting.SecretKey, |