Skip to content

Commit 484e3dc

Browse files
lunnytechknowlogick
authored andcommitted
site admin could view org's members (#9346)
1 parent f6ba912 commit 484e3dc

File tree

4 files changed

+136
-117
lines changed

4 files changed

+136
-117
lines changed

routers/org/home.go

+133
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
// Copyright 2019 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package org
6+
7+
import (
8+
"strings"
9+
10+
"code.gitea.io/gitea/models"
11+
"code.gitea.io/gitea/modules/base"
12+
"code.gitea.io/gitea/modules/context"
13+
"code.gitea.io/gitea/modules/setting"
14+
)
15+
16+
const (
17+
tplOrgHome base.TplName = "org/home"
18+
)
19+
20+
// Home show organization home page
21+
func Home(ctx *context.Context) {
22+
ctx.SetParams(":org", ctx.Params(":username"))
23+
context.HandleOrgAssignment(ctx)
24+
if ctx.Written() {
25+
return
26+
}
27+
28+
org := ctx.Org.Organization
29+
30+
if !models.HasOrgVisible(org, ctx.User) {
31+
ctx.NotFound("HasOrgVisible", nil)
32+
return
33+
}
34+
35+
ctx.Data["Title"] = org.DisplayName()
36+
37+
var orderBy models.SearchOrderBy
38+
ctx.Data["SortType"] = ctx.Query("sort")
39+
switch ctx.Query("sort") {
40+
case "newest":
41+
orderBy = models.SearchOrderByNewest
42+
case "oldest":
43+
orderBy = models.SearchOrderByOldest
44+
case "recentupdate":
45+
orderBy = models.SearchOrderByRecentUpdated
46+
case "leastupdate":
47+
orderBy = models.SearchOrderByLeastUpdated
48+
case "reversealphabetically":
49+
orderBy = models.SearchOrderByAlphabeticallyReverse
50+
case "alphabetically":
51+
orderBy = models.SearchOrderByAlphabetically
52+
case "moststars":
53+
orderBy = models.SearchOrderByStarsReverse
54+
case "feweststars":
55+
orderBy = models.SearchOrderByStars
56+
case "mostforks":
57+
orderBy = models.SearchOrderByForksReverse
58+
case "fewestforks":
59+
orderBy = models.SearchOrderByForks
60+
default:
61+
ctx.Data["SortType"] = "recentupdate"
62+
orderBy = models.SearchOrderByRecentUpdated
63+
}
64+
65+
keyword := strings.Trim(ctx.Query("q"), " ")
66+
ctx.Data["Keyword"] = keyword
67+
68+
page := ctx.QueryInt("page")
69+
if page <= 0 {
70+
page = 1
71+
}
72+
73+
var (
74+
repos []*models.Repository
75+
count int64
76+
err error
77+
)
78+
repos, count, err = models.SearchRepository(&models.SearchRepoOptions{
79+
Keyword: keyword,
80+
OwnerID: org.ID,
81+
OrderBy: orderBy,
82+
Private: ctx.IsSigned,
83+
UserIsAdmin: ctx.IsUserSiteAdmin(),
84+
UserID: ctx.Data["SignedUserID"].(int64),
85+
Page: page,
86+
IsProfile: true,
87+
PageSize: setting.UI.User.RepoPagingNum,
88+
IncludeDescription: setting.UI.SearchRepoDescription,
89+
})
90+
if err != nil {
91+
ctx.ServerError("SearchRepository", err)
92+
return
93+
}
94+
95+
var opts = models.FindOrgMembersOpts{
96+
OrgID: org.ID,
97+
PublicOnly: true,
98+
Limit: 25,
99+
}
100+
101+
if ctx.User != nil {
102+
isMember, err := org.IsOrgMember(ctx.User.ID)
103+
if err != nil {
104+
ctx.Error(500, "IsOrgMember")
105+
return
106+
}
107+
opts.PublicOnly = !isMember && !ctx.User.IsAdmin
108+
}
109+
110+
members, _, err := models.FindOrgMembers(opts)
111+
if err != nil {
112+
ctx.ServerError("FindOrgMembers", err)
113+
return
114+
}
115+
116+
membersCount, err := models.CountOrgMembers(opts)
117+
if err != nil {
118+
ctx.ServerError("CountOrgMembers", err)
119+
return
120+
}
121+
122+
ctx.Data["Repos"] = repos
123+
ctx.Data["Total"] = count
124+
ctx.Data["MembersTotal"] = membersCount
125+
ctx.Data["Members"] = members
126+
ctx.Data["Teams"] = org.Teams
127+
128+
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
129+
pager.SetDefaultParams(ctx)
130+
ctx.Data["Page"] = pager
131+
132+
ctx.HTML(200, tplOrgHome)
133+
}

routers/org/members.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func Members(ctx *context.Context) {
4141
ctx.Error(500, "IsOrgMember")
4242
return
4343
}
44-
opts.PublicOnly = !isMember
44+
opts.PublicOnly = !isMember && !ctx.User.IsAdmin
4545
}
4646

4747
total, err := models.CountOrgMembers(opts)

routers/user/home.go

-115
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ const (
2929
tplDashboard base.TplName = "user/dashboard/dashboard"
3030
tplIssues base.TplName = "user/dashboard/issues"
3131
tplProfile base.TplName = "user/profile"
32-
tplOrgHome base.TplName = "org/home"
3332
)
3433

3534
// getDashboardContextUser finds out dashboard is viewing as which context user.
@@ -463,120 +462,6 @@ func ShowGPGKeys(ctx *context.Context, uid int64) {
463462
ctx.PlainText(200, buf.Bytes())
464463
}
465464

466-
func showOrgProfile(ctx *context.Context) {
467-
ctx.SetParams(":org", ctx.Params(":username"))
468-
context.HandleOrgAssignment(ctx)
469-
if ctx.Written() {
470-
return
471-
}
472-
473-
org := ctx.Org.Organization
474-
475-
if !models.HasOrgVisible(org, ctx.User) {
476-
ctx.NotFound("HasOrgVisible", nil)
477-
return
478-
}
479-
480-
ctx.Data["Title"] = org.DisplayName()
481-
482-
var orderBy models.SearchOrderBy
483-
ctx.Data["SortType"] = ctx.Query("sort")
484-
switch ctx.Query("sort") {
485-
case "newest":
486-
orderBy = models.SearchOrderByNewest
487-
case "oldest":
488-
orderBy = models.SearchOrderByOldest
489-
case "recentupdate":
490-
orderBy = models.SearchOrderByRecentUpdated
491-
case "leastupdate":
492-
orderBy = models.SearchOrderByLeastUpdated
493-
case "reversealphabetically":
494-
orderBy = models.SearchOrderByAlphabeticallyReverse
495-
case "alphabetically":
496-
orderBy = models.SearchOrderByAlphabetically
497-
case "moststars":
498-
orderBy = models.SearchOrderByStarsReverse
499-
case "feweststars":
500-
orderBy = models.SearchOrderByStars
501-
case "mostforks":
502-
orderBy = models.SearchOrderByForksReverse
503-
case "fewestforks":
504-
orderBy = models.SearchOrderByForks
505-
default:
506-
ctx.Data["SortType"] = "recentupdate"
507-
orderBy = models.SearchOrderByRecentUpdated
508-
}
509-
510-
keyword := strings.Trim(ctx.Query("q"), " ")
511-
ctx.Data["Keyword"] = keyword
512-
513-
page := ctx.QueryInt("page")
514-
if page <= 0 {
515-
page = 1
516-
}
517-
518-
var (
519-
repos []*models.Repository
520-
count int64
521-
err error
522-
)
523-
repos, count, err = models.SearchRepository(&models.SearchRepoOptions{
524-
Keyword: keyword,
525-
OwnerID: org.ID,
526-
OrderBy: orderBy,
527-
Private: ctx.IsSigned,
528-
UserIsAdmin: ctx.IsUserSiteAdmin(),
529-
UserID: ctx.Data["SignedUserID"].(int64),
530-
Page: page,
531-
IsProfile: true,
532-
PageSize: setting.UI.User.RepoPagingNum,
533-
IncludeDescription: setting.UI.SearchRepoDescription,
534-
})
535-
if err != nil {
536-
ctx.ServerError("SearchRepository", err)
537-
return
538-
}
539-
540-
var opts = models.FindOrgMembersOpts{
541-
OrgID: org.ID,
542-
PublicOnly: true,
543-
Limit: 25,
544-
}
545-
546-
if ctx.User != nil {
547-
isMember, err := org.IsOrgMember(ctx.User.ID)
548-
if err != nil {
549-
ctx.Error(500, "IsOrgMember")
550-
return
551-
}
552-
opts.PublicOnly = !isMember
553-
}
554-
555-
members, _, err := models.FindOrgMembers(opts)
556-
if err != nil {
557-
ctx.ServerError("FindOrgMembers", err)
558-
return
559-
}
560-
561-
membersCount, err := models.CountOrgMembers(opts)
562-
if err != nil {
563-
ctx.ServerError("CountOrgMembers", err)
564-
return
565-
}
566-
567-
ctx.Data["Repos"] = repos
568-
ctx.Data["Total"] = count
569-
ctx.Data["MembersTotal"] = membersCount
570-
ctx.Data["Members"] = members
571-
ctx.Data["Teams"] = org.Teams
572-
573-
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
574-
pager.SetDefaultParams(ctx)
575-
ctx.Data["Page"] = pager
576-
577-
ctx.HTML(200, tplOrgHome)
578-
}
579-
580465
// Email2User show user page via email
581466
func Email2User(ctx *context.Context) {
582467
u, err := models.GetUserByEmail(ctx.Query("email"))

routers/user/profile.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"code.gitea.io/gitea/modules/context"
1616
"code.gitea.io/gitea/modules/setting"
1717
"code.gitea.io/gitea/modules/util"
18+
"code.gitea.io/gitea/routers/org"
1819
"code.gitea.io/gitea/routers/repo"
1920
)
2021

@@ -83,7 +84,7 @@ func Profile(ctx *context.Context) {
8384
}
8485

8586
if ctxUser.IsOrganization() {
86-
showOrgProfile(ctx)
87+
org.Home(ctx)
8788
return
8889
}
8990

0 commit comments

Comments
 (0)