summaryrefslogtreecommitdiffstats
path: root/routers/web/org
diff options
context:
space:
mode:
Diffstat (limited to 'routers/web/org')
-rw-r--r--routers/web/org/members.go19
-rw-r--r--routers/web/org/teams.go34
2 files changed, 47 insertions, 6 deletions
diff --git a/routers/web/org/members.go b/routers/web/org/members.go
index 84aaa28f60..ef5a69e157 100644
--- a/routers/web/org/members.go
+++ b/routers/web/org/members.go
@@ -99,14 +99,18 @@ func MembersAction(ctx *context.Context) {
err = org.RemoveMember(uid)
if models.IsErrLastOrgOwner(err) {
ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
- ctx.Redirect(ctx.Org.OrgLink + "/members")
+ ctx.JSON(http.StatusOK, map[string]interface{}{
+ "redirect": ctx.Org.OrgLink + "/members",
+ })
return
}
case "leave":
err = org.RemoveMember(ctx.User.ID)
if models.IsErrLastOrgOwner(err) {
ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
- ctx.Redirect(ctx.Org.OrgLink + "/members")
+ ctx.JSON(http.StatusOK, map[string]interface{}{
+ "redirect": ctx.Org.OrgLink + "/members",
+ })
return
}
}
@@ -120,9 +124,12 @@ func MembersAction(ctx *context.Context) {
return
}
- if ctx.Params(":action") != "leave" {
- ctx.Redirect(ctx.Org.OrgLink + "/members")
- } else {
- ctx.Redirect(setting.AppSubURL + "/")
+ redirect := ctx.Org.OrgLink + "/members"
+ if ctx.Params(":action") == "leave" {
+ redirect = setting.AppSubURL + "/"
}
+
+ ctx.JSON(http.StatusOK, map[string]interface{}{
+ "redirect": redirect,
+ })
}
diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go
index 4725f19b3d..c93fcd062b 100644
--- a/routers/web/org/teams.go
+++ b/routers/web/org/teams.go
@@ -66,6 +66,23 @@ func TeamsAction(ctx *context.Context) {
err = ctx.Org.Team.AddMember(ctx.User.ID)
case "leave":
err = ctx.Org.Team.RemoveMember(ctx.User.ID)
+ if err != nil {
+ if models.IsErrLastOrgOwner(err) {
+ ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
+ } else {
+ log.Error("Action(%s): %v", ctx.Params(":action"), err)
+ ctx.JSON(http.StatusOK, map[string]interface{}{
+ "ok": false,
+ "err": err.Error(),
+ })
+ return
+ }
+ }
+ ctx.JSON(http.StatusOK,
+ map[string]interface{}{
+ "redirect": ctx.Org.OrgLink + "/teams/",
+ })
+ return
case "remove":
if !ctx.Org.IsOwner {
ctx.Error(http.StatusNotFound)
@@ -73,6 +90,23 @@ func TeamsAction(ctx *context.Context) {
}
err = ctx.Org.Team.RemoveMember(uid)
page = "team"
+ if err != nil {
+ if models.IsErrLastOrgOwner(err) {
+ ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
+ } else {
+ log.Error("Action(%s): %v", ctx.Params(":action"), err)
+ ctx.JSON(http.StatusOK, map[string]interface{}{
+ "ok": false,
+ "err": err.Error(),
+ })
+ return
+ }
+ }
+ ctx.JSON(http.StatusOK,
+ map[string]interface{}{
+ "redirect": ctx.Org.OrgLink + "/teams/" + ctx.Org.Team.LowerName,
+ })
+ return
case "add":
if !ctx.Org.IsOwner {
ctx.Error(http.StatusNotFound)