Fix 404 error when remove self from an organization (#26362)
Same to #24322 Not only `leave` action but also `remove` action should check whether user still belongs to the org.
This commit is contained in:
		
							parent
							
								
									b937adc54d
								
							
						
					
					
						commit
						9fc68b680f
					
				|  | @ -86,18 +86,7 @@ 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]any{ | ||||
| 				"redirect": redirect, | ||||
| 			}) | ||||
| 		checkIsOrgMemberAndRedirect(ctx, ctx.Org.OrgLink+"/teams/") | ||||
| 		return | ||||
| 	case "remove": | ||||
| 		if !ctx.Org.IsOwner { | ||||
|  | @ -124,10 +113,7 @@ func TeamsAction(ctx *context.Context) { | |||
| 				return | ||||
| 			} | ||||
| 		} | ||||
| 		ctx.JSON(http.StatusOK, | ||||
| 			map[string]any{ | ||||
| 				"redirect": ctx.Org.OrgLink + "/teams/" + url.PathEscape(ctx.Org.Team.LowerName), | ||||
| 			}) | ||||
| 		checkIsOrgMemberAndRedirect(ctx, ctx.Org.OrgLink+"/teams/"+url.PathEscape(ctx.Org.Team.LowerName)) | ||||
| 		return | ||||
| 	case "add": | ||||
| 		if !ctx.Org.IsOwner { | ||||
|  | @ -217,6 +203,20 @@ func TeamsAction(ctx *context.Context) { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| func checkIsOrgMemberAndRedirect(ctx *context.Context, defaultRedirect string) { | ||||
| 	if isOrgMember, err := org_model.IsOrganizationMember(ctx, ctx.Org.Organization.ID, ctx.Doer.ID); err != nil { | ||||
| 		ctx.ServerError("IsOrganizationMember", err) | ||||
| 		return | ||||
| 	} else if !isOrgMember { | ||||
| 		if ctx.Org.Organization.Visibility.IsPrivate() { | ||||
| 			defaultRedirect = setting.AppSubURL + "/" | ||||
| 		} else { | ||||
| 			defaultRedirect = ctx.Org.Organization.HomeLink() | ||||
| 		} | ||||
| 	} | ||||
| 	ctx.JSONRedirect(defaultRedirect) | ||||
| } | ||||
| 
 | ||||
| // TeamsRepoAction operate team's repository
 | ||||
| func TeamsRepoAction(ctx *context.Context) { | ||||
| 	if !ctx.Org.IsOwner { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue