aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorKN4CK3R <admin@oldschoolhack.me>2022-03-26 10:04:22 +0100
committerGitHub <noreply@github.com>2022-03-26 17:04:22 +0800
commit59b867dc2dfc1ecb0ee703ff44e1be9c5c53cf86 (patch)
tree7114b991554e6e7dcb4123c0aa365c674d8411a0 /modules
parentf36701c702dc67011999cfaaf37e002c13e7a87e (diff)
downloadgitea-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.go5
-rw-r--r--modules/context/org.go3
-rw-r--r--modules/context/repo.go1
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