mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	#1944 Drop /org/ URL path prefix in organization home page
This commit is contained in:
		| @@ -8,97 +8,94 @@ import ( | ||||
| 	"gopkg.in/macaron.v1" | ||||
|  | ||||
| 	"github.com/gogits/gogs/models" | ||||
| 	"github.com/gogits/gogs/modules/log" | ||||
| 	"github.com/gogits/gogs/modules/setting" | ||||
| ) | ||||
|  | ||||
| func OrgAssignment(redirect bool, args ...bool) macaron.Handler { | ||||
| 	return func(ctx *Context) { | ||||
| 		var ( | ||||
| 			requireMember    bool | ||||
| 			requireOwner     bool | ||||
| 			requireAdminTeam bool | ||||
| 		) | ||||
| 		if len(args) >= 1 { | ||||
| 			requireMember = args[0] | ||||
| 		} | ||||
| 		if len(args) >= 2 { | ||||
| 			requireOwner = args[1] | ||||
| 		} | ||||
| 		if len(args) >= 3 { | ||||
| 			requireAdminTeam = args[2] | ||||
| 		} | ||||
| func HandleOrgAssignment(ctx *Context, args ...bool) { | ||||
| 	var ( | ||||
| 		requireMember    bool | ||||
| 		requireOwner     bool | ||||
| 		requireAdminTeam bool | ||||
| 	) | ||||
| 	if len(args) >= 1 { | ||||
| 		requireMember = args[0] | ||||
| 	} | ||||
| 	if len(args) >= 2 { | ||||
| 		requireOwner = args[1] | ||||
| 	} | ||||
| 	if len(args) >= 3 { | ||||
| 		requireAdminTeam = args[2] | ||||
| 	} | ||||
|  | ||||
| 		orgName := ctx.Params(":org") | ||||
| 	orgName := ctx.Params(":org") | ||||
|  | ||||
| 		var err error | ||||
| 		ctx.Org.Organization, err = models.GetUserByName(orgName) | ||||
| 		if err != nil { | ||||
| 			if models.IsErrUserNotExist(err) { | ||||
| 				ctx.Handle(404, "GetUserByName", err) | ||||
| 			} else if redirect { | ||||
| 				log.Error(4, "GetUserByName", err) | ||||
| 				ctx.Redirect(setting.AppSubUrl + "/") | ||||
| 			} else { | ||||
| 				ctx.Handle(500, "GetUserByName", err) | ||||
| 			} | ||||
| 			return | ||||
| 		} | ||||
| 		org := ctx.Org.Organization | ||||
| 		ctx.Data["Org"] = org | ||||
|  | ||||
| 		// Force redirection when username is actually a user. | ||||
| 		if !org.IsOrganization() { | ||||
| 			ctx.Redirect("/" + org.Name) | ||||
| 			return | ||||
| 		} | ||||
|  | ||||
| 		if ctx.IsSigned { | ||||
| 			ctx.Org.IsOwner = org.IsOwnedBy(ctx.User.Id) | ||||
| 			if ctx.Org.IsOwner { | ||||
| 				ctx.Org.IsMember = true | ||||
| 				ctx.Org.IsAdminTeam = true | ||||
| 			} else { | ||||
| 				if org.IsOrgMember(ctx.User.Id) { | ||||
| 					ctx.Org.IsMember = true | ||||
| 				} | ||||
| 			} | ||||
| 	var err error | ||||
| 	ctx.Org.Organization, err = models.GetUserByName(orgName) | ||||
| 	if err != nil { | ||||
| 		if models.IsErrUserNotExist(err) { | ||||
| 			ctx.Handle(404, "GetUserByName", err) | ||||
| 		} else { | ||||
| 			// Fake data. | ||||
| 			ctx.Data["SignedUser"] = &models.User{} | ||||
| 			ctx.Handle(500, "GetUserByName", err) | ||||
| 		} | ||||
| 		if (requireMember && !ctx.Org.IsMember) || | ||||
| 			(requireOwner && !ctx.Org.IsOwner) { | ||||
| 			ctx.Handle(404, "OrgAssignment", err) | ||||
| 			return | ||||
| 		} | ||||
| 		ctx.Data["IsOrganizationOwner"] = ctx.Org.IsOwner | ||||
| 		return | ||||
| 	} | ||||
| 	org := ctx.Org.Organization | ||||
| 	ctx.Data["Org"] = org | ||||
|  | ||||
| 		ctx.Org.OrgLink = setting.AppSubUrl + "/org/" + org.Name | ||||
| 		ctx.Data["OrgLink"] = ctx.Org.OrgLink | ||||
| 	// Force redirection when username is actually a user. | ||||
| 	if !org.IsOrganization() { | ||||
| 		ctx.Redirect("/" + org.Name) | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 		// Team. | ||||
| 		teamName := ctx.Params(":team") | ||||
| 		if len(teamName) > 0 { | ||||
| 			ctx.Org.Team, err = org.GetTeam(teamName) | ||||
| 			if err != nil { | ||||
| 				if err == models.ErrTeamNotExist { | ||||
| 					ctx.Handle(404, "GetTeam", err) | ||||
| 				} else if redirect { | ||||
| 					log.Error(4, "GetTeam", err) | ||||
| 					ctx.Redirect(setting.AppSubUrl + "/") | ||||
| 				} else { | ||||
| 					ctx.Handle(500, "GetTeam", err) | ||||
| 				} | ||||
| 				return | ||||
| 	if ctx.IsSigned { | ||||
| 		ctx.Org.IsOwner = org.IsOwnedBy(ctx.User.Id) | ||||
| 		if ctx.Org.IsOwner { | ||||
| 			ctx.Org.IsMember = true | ||||
| 			ctx.Org.IsAdminTeam = true | ||||
| 		} else { | ||||
| 			if org.IsOrgMember(ctx.User.Id) { | ||||
| 				ctx.Org.IsMember = true | ||||
| 			} | ||||
| 			ctx.Data["Team"] = ctx.Org.Team | ||||
| 			ctx.Org.IsAdminTeam = ctx.Org.Team.IsOwnerTeam() || ctx.Org.Team.Authorize >= models.ACCESS_MODE_ADMIN | ||||
| 		} | ||||
| 		ctx.Data["IsAdminTeam"] = ctx.Org.IsAdminTeam | ||||
| 		if requireAdminTeam && !ctx.Org.IsAdminTeam { | ||||
| 			ctx.Handle(404, "OrgAssignment", err) | ||||
| 	} else { | ||||
| 		// Fake data. | ||||
| 		ctx.Data["SignedUser"] = &models.User{} | ||||
| 	} | ||||
| 	if (requireMember && !ctx.Org.IsMember) || | ||||
| 		(requireOwner && !ctx.Org.IsOwner) { | ||||
| 		ctx.Handle(404, "OrgAssignment", err) | ||||
| 		return | ||||
| 	} | ||||
| 	ctx.Data["IsOrganizationOwner"] = ctx.Org.IsOwner | ||||
|  | ||||
| 	ctx.Org.OrgLink = setting.AppSubUrl + "/org/" + org.Name | ||||
| 	ctx.Data["OrgLink"] = ctx.Org.OrgLink | ||||
|  | ||||
| 	// Team. | ||||
| 	teamName := ctx.Params(":team") | ||||
| 	if len(teamName) > 0 { | ||||
| 		ctx.Org.Team, err = org.GetTeam(teamName) | ||||
| 		if err != nil { | ||||
| 			if err == models.ErrTeamNotExist { | ||||
| 				ctx.Handle(404, "GetTeam", err) | ||||
| 			} else { | ||||
| 				ctx.Handle(500, "GetTeam", err) | ||||
| 			} | ||||
| 			return | ||||
| 		} | ||||
| 		ctx.Data["Team"] = ctx.Org.Team | ||||
| 		ctx.Org.IsAdminTeam = ctx.Org.Team.IsOwnerTeam() || ctx.Org.Team.Authorize >= models.ACCESS_MODE_ADMIN | ||||
| 	} | ||||
| 	ctx.Data["IsAdminTeam"] = ctx.Org.IsAdminTeam | ||||
| 	if requireAdminTeam && !ctx.Org.IsAdminTeam { | ||||
| 		ctx.Handle(404, "OrgAssignment", err) | ||||
| 		return | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func OrgAssignment(args ...bool) macaron.Handler { | ||||
| 	return func(ctx *Context) { | ||||
| 		HandleOrgAssignment(ctx, args...) | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user