mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-20 16:10:50 +00:00
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:
parent
4c6e029506
commit
a51cc6dea4
10 changed files with 129 additions and 72 deletions
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue