diff options
Diffstat (limited to 'modules/middleware/org.go')
-rw-r--r-- | modules/middleware/org.go | 149 |
1 files changed, 73 insertions, 76 deletions
diff --git a/modules/middleware/org.go b/modules/middleware/org.go index 1e7d4a6797..29754bb929 100644 --- a/modules/middleware/org.go +++ b/modules/middleware/org.go @@ -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 + var err error + ctx.Org.Organization, err = models.GetUserByName(orgName) + if err != nil { + if models.IsErrUserNotExist(err) { + ctx.Handle(404, "GetUserByName", err) + } else { + ctx.Handle(500, "GetUserByName", err) } - org := ctx.Org.Organization - ctx.Data["Org"] = org + 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 - } + // 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 { + 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.Org.IsAdminTeam = true - } else { - if org.IsOrgMember(ctx.User.Id) { - ctx.Org.IsMember = true - } } - } 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 + } 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 + 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 if redirect { - log.Error(4, "GetTeam", err) - ctx.Redirect(setting.AppSubUrl + "/") - } else { - ctx.Handle(500, "GetTeam", err) - } - 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 { + ctx.Handle(500, "GetTeam", err) } - 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 } + 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...) } } |