diff options
author | yp05327 <576951401@qq.com> | 2023-04-27 01:27:46 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-26 12:27:46 -0400 |
commit | df9a62b5f9fdfd4f8719761c52d09533288a3b3a (patch) | |
tree | 816ab316e2beda3f36a81749c9a8d679b8f57fb8 /routers/web/org | |
parent | f1a4330306a21a1b53aaa744ec5749a52135c807 (diff) | |
download | gitea-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.
Diffstat (limited to 'routers/web/org')
-rw-r--r-- | routers/web/org/teams.go | 10 |
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": |