diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-12-14 14:36:59 +0800 |
---|---|---|
committer | techknowlogick <techknowlogick@gitea.io> | 2019-12-14 01:36:59 -0500 |
commit | 484e3dc5a9012a50838bf8d00de3ffd136c0759b (patch) | |
tree | b9b323e1f272ed11dd3d5fabc729e80df7e998dc /routers/org | |
parent | f6ba912cd6e1868e8f66c5a38cbe317f243d7806 (diff) | |
download | gitea-484e3dc5a9012a50838bf8d00de3ffd136c0759b.tar.gz gitea-484e3dc5a9012a50838bf8d00de3ffd136c0759b.zip |
site admin could view org's members (#9346)
Diffstat (limited to 'routers/org')
-rw-r--r-- | routers/org/home.go | 133 | ||||
-rw-r--r-- | routers/org/members.go | 2 |
2 files changed, 134 insertions, 1 deletions
diff --git a/routers/org/home.go b/routers/org/home.go new file mode 100644 index 0000000000..9c24fe72fb --- /dev/null +++ b/routers/org/home.go @@ -0,0 +1,133 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package org + +import ( + "strings" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/base" + "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/setting" +) + +const ( + tplOrgHome base.TplName = "org/home" +) + +// Home show organization home page +func Home(ctx *context.Context) { + ctx.SetParams(":org", ctx.Params(":username")) + context.HandleOrgAssignment(ctx) + if ctx.Written() { + return + } + + org := ctx.Org.Organization + + if !models.HasOrgVisible(org, ctx.User) { + ctx.NotFound("HasOrgVisible", nil) + return + } + + ctx.Data["Title"] = org.DisplayName() + + var orderBy models.SearchOrderBy + ctx.Data["SortType"] = ctx.Query("sort") + switch ctx.Query("sort") { + case "newest": + orderBy = models.SearchOrderByNewest + case "oldest": + orderBy = models.SearchOrderByOldest + case "recentupdate": + orderBy = models.SearchOrderByRecentUpdated + case "leastupdate": + orderBy = models.SearchOrderByLeastUpdated + case "reversealphabetically": + orderBy = models.SearchOrderByAlphabeticallyReverse + case "alphabetically": + orderBy = models.SearchOrderByAlphabetically + case "moststars": + orderBy = models.SearchOrderByStarsReverse + case "feweststars": + orderBy = models.SearchOrderByStars + case "mostforks": + orderBy = models.SearchOrderByForksReverse + case "fewestforks": + orderBy = models.SearchOrderByForks + default: + ctx.Data["SortType"] = "recentupdate" + orderBy = models.SearchOrderByRecentUpdated + } + + keyword := strings.Trim(ctx.Query("q"), " ") + ctx.Data["Keyword"] = keyword + + page := ctx.QueryInt("page") + if page <= 0 { + page = 1 + } + + var ( + repos []*models.Repository + count int64 + err error + ) + repos, count, err = models.SearchRepository(&models.SearchRepoOptions{ + Keyword: keyword, + OwnerID: org.ID, + OrderBy: orderBy, + Private: ctx.IsSigned, + UserIsAdmin: ctx.IsUserSiteAdmin(), + UserID: ctx.Data["SignedUserID"].(int64), + Page: page, + IsProfile: true, + PageSize: setting.UI.User.RepoPagingNum, + IncludeDescription: setting.UI.SearchRepoDescription, + }) + if err != nil { + ctx.ServerError("SearchRepository", err) + return + } + + var opts = models.FindOrgMembersOpts{ + OrgID: org.ID, + PublicOnly: true, + Limit: 25, + } + + if ctx.User != nil { + isMember, err := org.IsOrgMember(ctx.User.ID) + if err != nil { + ctx.Error(500, "IsOrgMember") + return + } + opts.PublicOnly = !isMember && !ctx.User.IsAdmin + } + + members, _, err := models.FindOrgMembers(opts) + if err != nil { + ctx.ServerError("FindOrgMembers", err) + return + } + + membersCount, err := models.CountOrgMembers(opts) + if err != nil { + ctx.ServerError("CountOrgMembers", err) + return + } + + ctx.Data["Repos"] = repos + ctx.Data["Total"] = count + ctx.Data["MembersTotal"] = membersCount + ctx.Data["Members"] = members + ctx.Data["Teams"] = org.Teams + + pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5) + pager.SetDefaultParams(ctx) + ctx.Data["Page"] = pager + + ctx.HTML(200, tplOrgHome) +} diff --git a/routers/org/members.go b/routers/org/members.go index b9805c2c03..6bccb3d972 100644 --- a/routers/org/members.go +++ b/routers/org/members.go @@ -41,7 +41,7 @@ func Members(ctx *context.Context) { ctx.Error(500, "IsOrgMember") return } - opts.PublicOnly = !isMember + opts.PublicOnly = !isMember && !ctx.User.IsAdmin } total, err := models.CountOrgMembers(opts) |