mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	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:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user