summaryrefslogtreecommitdiffstats
path: root/routers/org
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-12-14 14:36:59 +0800
committertechknowlogick <techknowlogick@gitea.io>2019-12-14 01:36:59 -0500
commit484e3dc5a9012a50838bf8d00de3ffd136c0759b (patch)
treeb9b323e1f272ed11dd3d5fabc729e80df7e998dc /routers/org
parentf6ba912cd6e1868e8f66c5a38cbe317f243d7806 (diff)
downloadgitea-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.go133
-rw-r--r--routers/org/members.go2
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)