Skip to content

Commit

Permalink
site admin could view org's members (#9346)
Browse files Browse the repository at this point in the history
  • Loading branch information
lunny authored and techknowlogick committed Dec 14, 2019
1 parent f6ba912 commit 484e3dc
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 117 deletions.
133 changes: 133 additions & 0 deletions routers/org/home.go
Original file line number Diff line number Diff line change
@@ -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)
}
2 changes: 1 addition & 1 deletion routers/org/members.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
115 changes: 0 additions & 115 deletions routers/user/home.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ const (
tplDashboard base.TplName = "user/dashboard/dashboard"
tplIssues base.TplName = "user/dashboard/issues"
tplProfile base.TplName = "user/profile"
tplOrgHome base.TplName = "org/home"
)

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

func showOrgProfile(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
}

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)
}

// Email2User show user page via email
func Email2User(ctx *context.Context) {
u, err := models.GetUserByEmail(ctx.Query("email"))
Expand Down
3 changes: 2 additions & 1 deletion routers/user/profile.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/routers/org"
"code.gitea.io/gitea/routers/repo"
)

Expand Down Expand Up @@ -83,7 +84,7 @@ func Profile(ctx *context.Context) {
}

if ctxUser.IsOrganization() {
showOrgProfile(ctx)
org.Home(ctx)
return
}

Expand Down

0 comments on commit 484e3dc

Please sign in to comment.