aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2020-01-05 19:48:47 +0100
committerzeripath <art27@cantab.net>2020-01-05 18:48:47 +0000
commit133ae18b61c5d3bdfc7670b8320abe84dd96cbe2 (patch)
treef0578979a35ff329499b83888aa6f9e5278cb9c3
parent7e4f490482014fa52d15902b5aa20952461c64f4 (diff)
downloadgitea-133ae18b61c5d3bdfc7670b8320abe84dd96cbe2.tar.gz
gitea-133ae18b61c5d3bdfc7670b8320abe84dd96cbe2.zip
[BugFix] Hide public repos owned by private orgs (#9609)
* Restrict AllPublic to actually public repos. * Add new parameter to add in AllLimited Repos
-rw-r--r--models/repo_list.go9
-rw-r--r--models/repo_list_test.go4
-rw-r--r--routers/home.go1
3 files changed, 10 insertions, 4 deletions
diff --git a/models/repo_list.go b/models/repo_list.go
index 34fac8b055..7b48834dba 100644
--- a/models/repo_list.go
+++ b/models/repo_list.go
@@ -121,7 +121,8 @@ type SearchRepoOptions struct {
StarredByID int64
Page int
IsProfile bool
- AllPublic bool // Include also all public repositories
+ AllPublic bool // Include also all public repositories of users and public organisations
+ AllLimited bool // Include also all public repositories of limited organisations
PageSize int // Can be smaller than or equal to setting.ExplorePagingNum
// None -> include collaborative AND non-collaborative
// True -> include just collaborative
@@ -228,7 +229,11 @@ func SearchRepository(opts *SearchRepoOptions) (RepositoryList, int64, error) {
}
if opts.AllPublic {
- accessCond = accessCond.Or(builder.Eq{"is_private": false})
+ accessCond = accessCond.Or(builder.Eq{"is_private": false}.And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Eq{"`user`.visibility": structs.VisibleTypePublic}))))
+ }
+
+ if opts.AllLimited {
+ accessCond = accessCond.Or(builder.Eq{"is_private": false}.And(builder.In("owner_id", builder.Select("`user`.id").From("`user`").Where(builder.Eq{"`user`.visibility": structs.VisibleTypeLimited}))))
}
cond = cond.And(accessCond)
diff --git a/models/repo_list_test.go b/models/repo_list_test.go
index a1eed18b83..07f84207e2 100644
--- a/models/repo_list_test.go
+++ b/models/repo_list_test.go
@@ -177,8 +177,8 @@ func TestSearchRepository(t *testing.T) {
opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, AllPublic: true, Template: util.OptionalBoolFalse},
count: 25},
{name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborative",
- opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true, Template: util.OptionalBoolFalse},
- count: 31},
+ opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true, AllLimited: true, Template: util.OptionalBoolFalse},
+ count: 30},
{name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborativeByName",
opts: &SearchRepoOptions{Keyword: "test", Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true},
count: 15},
diff --git a/routers/home.go b/routers/home.go
index d223054f4c..773e0f3d6b 100644
--- a/routers/home.go
+++ b/routers/home.go
@@ -142,6 +142,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
Keyword: keyword,
OwnerID: opts.OwnerID,
AllPublic: true,
+ AllLimited: true,
TopicOnly: topicOnly,
IncludeDescription: setting.UI.SearchRepoDescription,
})