summaryrefslogtreecommitdiffstats
path: root/modules/context/context.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2021-01-28 01:46:35 +0800
committerGitHub <noreply@github.com>2021-01-27 18:46:35 +0100
commita51cc6dea41b154b946e982fde6cc1a600210a71 (patch)
tree07e9f38a2f3572bb8ed9a666d33dd30e976bd5e6 /modules/context/context.go
parent4c6e0295069a3c2f0df3d9f30560906bc2aa73a8 (diff)
downloadgitea-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.go25
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,