diff --git a/src/main/scala/gitbucket/core/service/RepositoryService.scala b/src/main/scala/gitbucket/core/service/RepositoryService.scala index f4ab4be..5381b40 100644 --- a/src/main/scala/gitbucket/core/service/RepositoryService.scala +++ b/src/main/scala/gitbucket/core/service/RepositoryService.scala @@ -338,7 +338,7 @@ repository.originUserName.getOrElse(repository.userName), repository.originRepositoryName.getOrElse(repository.repositoryName) ), - getRepositoryManagers(repository.userName) + getRepositoryManagers(repository.userName, repository.repositoryName) ) } } @@ -407,7 +407,7 @@ if (withoutPhysicalInfo) { Nil } else { - getRepositoryManagers(repository.userName) + getRepositoryManagers(repository.userName, repository.repositoryName) } ) } @@ -485,18 +485,21 @@ if (withoutPhysicalInfo) { Nil } else { - getRepositoryManagers(repository.userName) + getRepositoryManagers(repository.userName, repository.repositoryName) } ) } } - private def getRepositoryManagers(userName: String)(implicit s: Session): Seq[String] = + /** + * TODO It seems to be able to improve performance. For example, RequestCache can be used for getAccountByUserName call. + */ + private def getRepositoryManagers(userName: String, repositoryName: String)(implicit s: Session): Seq[String] = if (getAccountByUserName(userName).exists(_.isGroupAccount)) { getGroupMembers(userName).collect { case x if (x.isManager) => x.userName } } else { Seq(userName) - } + } ++ getCollaboratorUserNames(userName, repositoryName, Seq(Role.ADMIN)) /** * Updates the last activity date of the repository.