[BugFix] Hide public repos owned by private orgs (#9609)
* Restrict AllPublic to actually public repos. * Add new parameter to add in AllLimited Repos
This commit is contained in:
		
							parent
							
								
									7e4f490482
								
							
						
					
					
						commit
						133ae18b61
					
				
					 3 changed files with 10 additions and 4 deletions
				
			
		|  | @ -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) | ||||
|  |  | |||
|  | @ -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}, | ||||
|  |  | |||
|  | @ -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, | ||||
| 	}) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue