diff options
author | KN4CK3R <admin@oldschoolhack.me> | 2022-03-26 10:04:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-26 17:04:22 +0800 |
commit | 59b867dc2dfc1ecb0ee703ff44e1be9c5c53cf86 (patch) | |
tree | 7114b991554e6e7dcb4123c0aa365c674d8411a0 /modules | |
parent | f36701c702dc67011999cfaaf37e002c13e7a87e (diff) | |
download | gitea-59b867dc2dfc1ecb0ee703ff44e1be9c5c53cf86.tar.gz gitea-59b867dc2dfc1ecb0ee703ff44e1be9c5c53cf86.zip |
Add `ContextUser` to http request context (#18798)
This PR adds a middleware which sets a ContextUser (like GetUserByParams before) in a single place which can be used by other methods. For routes which represent a repo or org the respective middlewares set the field too.
Also fix a bug in modules/context/org.go during refactoring.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/context/context.go | 5 | ||||
-rw-r--r-- | modules/context/org.go | 3 | ||||
-rw-r--r-- | modules/context/repo.go | 1 |
3 files changed, 6 insertions, 3 deletions
diff --git a/modules/context/context.go b/modules/context/context.go index 6cd503984f..eb0edef394 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -67,8 +67,9 @@ type Context struct { IsSigned bool IsBasicAuth bool - Repo *Repository - Org *Organization + ContextUser *user_model.User + Repo *Repository + Org *Organization } // TrHTMLEscapeArgs runs Tr but pre-escapes all arguments with html.EscapeString. diff --git a/modules/context/org.go b/modules/context/org.go index a1080fc0fb..8e292fa1c5 100644 --- a/modules/context/org.go +++ b/modules/context/org.go @@ -53,7 +53,7 @@ func HandleOrgAssignment(ctx *Context, args ...bool) { var err error ctx.Org.Organization, err = models.GetOrgByName(orgName) if err != nil { - if user_model.IsErrUserNotExist(err) { + if models.IsErrOrgNotExist(err) { redirectUserID, err := user_model.LookupUserRedirect(orgName) if err == nil { RedirectToUser(ctx, orgName, redirectUserID) @@ -68,6 +68,7 @@ func HandleOrgAssignment(ctx *Context, args ...bool) { return } org := ctx.Org.Organization + ctx.ContextUser = org.AsUser() ctx.Data["Org"] = org teams, err := org.LoadTeams() diff --git a/modules/context/repo.go b/modules/context/repo.go index b345decf7e..ccdc810fb6 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -439,6 +439,7 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) { } } ctx.Repo.Owner = owner + ctx.ContextUser = owner ctx.Data["Username"] = ctx.Repo.Owner.Name // redirect link to wiki |