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.
This commit is contained in:
Lunny Xiao 2021-01-28 01:46:35 +08:00 committed by GitHub
parent 4c6e029506
commit a51cc6dea4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 129 additions and 72 deletions

View file

@ -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,