(refs #2031) Fix permission check for the repository menu

This commit is contained in:
Naoki Takezoe
2018-05-28 15:49:47 +09:00
parent c65c3e2c49
commit 9eff4cb485

View File

@@ -338,7 +338,7 @@ trait RepositoryService { self: AccountService =>
repository.originUserName.getOrElse(repository.userName), repository.originUserName.getOrElse(repository.userName),
repository.originRepositoryName.getOrElse(repository.repositoryName) repository.originRepositoryName.getOrElse(repository.repositoryName)
), ),
getRepositoryManagers(repository.userName) getRepositoryManagers(repository.userName, repository.repositoryName)
) )
} }
} }
@@ -407,7 +407,7 @@ trait RepositoryService { self: AccountService =>
if (withoutPhysicalInfo) { if (withoutPhysicalInfo) {
Nil Nil
} else { } else {
getRepositoryManagers(repository.userName) getRepositoryManagers(repository.userName, repository.repositoryName)
} }
) )
} }
@@ -485,18 +485,21 @@ trait RepositoryService { self: AccountService =>
if (withoutPhysicalInfo) { if (withoutPhysicalInfo) {
Nil Nil
} else { } 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)) { if (getAccountByUserName(userName).exists(_.isGroupAccount)) {
getGroupMembers(userName).collect { case x if (x.isManager) => x.userName } getGroupMembers(userName).collect { case x if (x.isManager) => x.userName }
} else { } else {
Seq(userName) Seq(userName)
} } ++ getCollaboratorUserNames(userName, repositoryName, Seq(Role.ADMIN))
/** /**
* Updates the last activity date of the repository. * Updates the last activity date of the repository.