From 88da582d02e801dde605fa78e61866e3fc7f821e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E5=A2=A8?= Date: Wed, 30 Nov 2022 17:00:00 +0800 Subject: [PATCH] Fix leaving organization bug on user settings -> orgs (#21983) Backport #21983 Fix #21772 Co-authored-by: wxiaoguang --- options/locale/locale_en-US.ini | 1 + routers/web/org/members.go | 11 +++++++++-- templates/user/settings/organization.tmpl | 18 ++++++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 1566dfc97d422..a1c250f94c981 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -497,6 +497,7 @@ team_not_exist = The team does not exist. last_org_owner = You cannot remove the last user from the 'owners' team. There must be at least one owner for an organization. cannot_add_org_to_team = An organization cannot be added as a team member. duplicate_invite_to_team = The user was already invited as a team member. +organization_leave_success = You have successfully left the organization %s. invalid_ssh_key = Can not verify your SSH key: %s invalid_gpg_key = Can not verify your GPG key: %s diff --git a/routers/web/org/members.go b/routers/web/org/members.go index ec5a98fc6a240..6aeff570710e2 100644 --- a/routers/web/org/members.go +++ b/routers/web/org/members.go @@ -108,13 +108,20 @@ func MembersAction(ctx *context.Context) { } case "leave": err = models.RemoveOrgUser(org.ID, ctx.Doer.ID) - if organization.IsErrLastOrgOwner(err) { + if err == nil { + ctx.Flash.Success(ctx.Tr("form.organization_leave_success", org.DisplayName())) + ctx.JSON(http.StatusOK, map[string]interface{}{ + "redirect": "", // keep the user stay on current page, in case they want to do other operations. + }) + } else if organization.IsErrLastOrgOwner(err) { ctx.Flash.Error(ctx.Tr("form.last_org_owner")) ctx.JSON(http.StatusOK, map[string]interface{}{ "redirect": ctx.Org.OrgLink + "/members", }) - return + } else { + log.Error("RemoveOrgUser(%d,%d): %v", org.ID, ctx.Doer.ID, err) } + return } if err != nil { diff --git a/templates/user/settings/organization.tmpl b/templates/user/settings/organization.tmpl index e25d5e7fa6766..703ac8ad8edbe 100644 --- a/templates/user/settings/organization.tmpl +++ b/templates/user/settings/organization.tmpl @@ -17,9 +17,13 @@ {{range .Orgs}}
-
+ {{$.CsrfTokenHtml}} - +
{{avatar . 28 "mini"}} @@ -36,4 +40,14 @@
+ {{template "base/footer" .}}