@@ -398,34 +398,10 @@ func Issues(ctx *context.Context) {
398
398
isShowClosed := ctx .Query ("state" ) == "closed"
399
399
400
400
// Get repository IDs where User/Org has access.
401
- // Again, the distinction between User and Org could perhaps be handled more elegantly.
402
- var err error
403
- var userRepoIDs []int64
404
- if ctxUser .IsOrganization () {
405
- env , err := ctxUser .AccessibleReposEnv (ctx .User .ID )
406
- if err != nil {
407
- ctx .ServerError ("AccessibleReposEnv" , err )
408
- return
409
- }
410
- userRepoIDs , err = env .RepoIDs (1 , ctxUser .NumRepos )
411
- if err != nil {
412
- ctx .ServerError ("env.RepoIDs" , err )
413
- return
414
- }
415
- userRepoIDs , err = models .FilterOutRepoIdsWithoutUnitAccess (ctx .User , userRepoIDs , unitType )
416
- if err != nil {
417
- ctx .ServerError ("FilterOutRepoIdsWithoutUnitAccess" , err )
418
- return
419
- }
420
- } else {
421
- userRepoIDs , err = ctxUser .GetAccessRepoIDs (unitType )
422
- if err != nil {
423
- ctx .ServerError ("ctxUser.GetAccessRepoIDs" , err )
424
- return
425
- }
426
- }
427
- if len (userRepoIDs ) == 0 {
428
- userRepoIDs = []int64 {- 1 }
401
+ userRepoIDs , errorTitle , err := userRepoIDs (ctxUser , ctx .User , unitType )
402
+ if err != nil {
403
+ ctx .ServerError (errorTitle , err )
404
+ return
429
405
}
430
406
431
407
// Build IssuesOptions, which contains filter information.
@@ -723,6 +699,47 @@ func repoIDs(reposQuery string) []int64 {
723
699
return repoIDs
724
700
}
725
701
702
+ func userRepoIDs (ctxUser , user * models.User , unitType models.UnitType ) ([]int64 , string , error ) {
703
+ var err error
704
+ var errorTitle string
705
+ var userRepoIDs []int64
706
+
707
+ if ctxUser .IsOrganization () {
708
+ userRepoIDs , errorTitle , err = orgRepoIds (ctxUser , user , unitType )
709
+ } else {
710
+ userRepoIDs , err = ctxUser .GetAccessRepoIDs (unitType )
711
+ errorTitle = "ctxUser.GetAccessRepoIDs"
712
+ }
713
+
714
+ if err != nil {
715
+ return nil , errorTitle , err
716
+ }
717
+
718
+ if len (userRepoIDs ) == 0 {
719
+ userRepoIDs = []int64 {- 1 }
720
+ }
721
+
722
+ return userRepoIDs , "" , nil
723
+ }
724
+
725
+ func orgRepoIds (org , user * models.User , unitType models.UnitType ) ([]int64 , string , error ) {
726
+ var orgRepoIDs []int64
727
+ var err error
728
+ env , err := org .AccessibleReposEnv (user .ID )
729
+ if err != nil {
730
+ return nil , "AccessibleReposEnv" , err
731
+ }
732
+ orgRepoIDs , err = env .RepoIDs (1 , org .NumRepos )
733
+ if err != nil {
734
+ return nil , "env.RepoIDs" , err
735
+ }
736
+ orgRepoIDs , err = models .FilterOutRepoIdsWithoutUnitAccess (user , orgRepoIDs , unitType )
737
+ if err != nil {
738
+ return nil , "FilterOutRepoIdsWithoutUnitAccess" , err
739
+ }
740
+ return orgRepoIDs , "" , nil
741
+ }
742
+
726
743
// ShowSSHKeys output all the ssh keys of user by uid
727
744
func ShowSSHKeys (ctx * context.Context , uid int64 ) {
728
745
keys , err := models .ListPublicKeys (uid , models.ListOptions {})
0 commit comments