(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.originRepositoryName.getOrElse(repository.repositoryName)
),
getRepositoryManagers(repository.userName)
getRepositoryManagers(repository.userName, repository.repositoryName)
)
}
}
@@ -407,7 +407,7 @@ trait RepositoryService { self: AccountService =>
if (withoutPhysicalInfo) {
Nil
} else {
getRepositoryManagers(repository.userName)
getRepositoryManagers(repository.userName, repository.repositoryName)
}
)
}
@@ -485,18 +485,21 @@ trait RepositoryService { self: AccountService =>
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.