@@ -398,34 +398,10 @@ func Issues(ctx *context.Context) {
398398 isShowClosed := ctx .Query ("state" ) == "closed"
399399
400400 // 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
429405 }
430406
431407 // Build IssuesOptions, which contains filter information.
@@ -723,6 +699,47 @@ func repoIDs(reposQuery string) []int64 {
723699 return repoIDs
724700}
725701
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+
726743// ShowSSHKeys output all the ssh keys of user by uid
727744func ShowSSHKeys (ctx * context.Context , uid int64 ) {
728745 keys , err := models .ListPublicKeys (uid , models.ListOptions {})
0 commit comments