summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryp05327 <576951401@qq.com>2023-04-27 01:27:46 +0900
committerGitHub <noreply@github.com>2023-04-26 12:27:46 -0400
commitdf9a62b5f9fdfd4f8719761c52d09533288a3b3a (patch)
tree816ab316e2beda3f36a81749c9a8d679b8f57fb8
parentf1a4330306a21a1b53aaa744ec5749a52135c807 (diff)
downloadgitea-df9a62b5f9fdfd4f8719761c52d09533288a3b3a.tar.gz
gitea-df9a62b5f9fdfd4f8719761c52d09533288a3b3a.zip
Fix 404 error when leaving the last private org team (#24322)
If the user only belongs to one org team and the org is private, leaving the org team will redirect to `ctx.Org.OrgLink + "/teams/"` which is inaccessible. So we need to check whether the user still belongs to the org.
-rw-r--r--routers/web/org/teams.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go
index bae8e5a003..2ce4bf5322 100644
--- a/routers/web/org/teams.go
+++ b/routers/web/org/teams.go
@@ -86,9 +86,17 @@ func TeamsAction(ctx *context.Context) {
return
}
}
+
+ redirect := ctx.Org.OrgLink + "/teams/"
+ if isOrgMember, err := org_model.IsOrganizationMember(ctx, ctx.Org.Organization.ID, ctx.Doer.ID); err != nil {
+ ctx.ServerError("IsOrganizationMember", err)
+ return
+ } else if !isOrgMember {
+ redirect = setting.AppSubURL + "/"
+ }
ctx.JSON(http.StatusOK,
map[string]interface{}{
- "redirect": ctx.Org.OrgLink + "/teams/",
+ "redirect": redirect,
})
return
case "remove":