Comparing is accessible by users who can refer to the repository.

This commit is contained in:
takezoe
2013-08-11 00:47:23 +09:00
parent 08eaf2104b
commit e10777576f
2 changed files with 7 additions and 5 deletions

View File

@@ -201,7 +201,7 @@ trait PullRequestsControllerBase extends ControllerBase {
} }
} }
get("/:owner/:repository/compare")(collaboratorsOnly { forkedRepository => get("/:owner/:repository/compare")(referrersOnly { forkedRepository =>
(forkedRepository.repository.originUserName, forkedRepository.repository.originRepositoryName) match { (forkedRepository.repository.originUserName, forkedRepository.repository.originRepositoryName) match {
case (Some(originUserName), Some(originRepositoryName)) => { case (Some(originUserName), Some(originRepositoryName)) => {
getRepository(originUserName, originRepositoryName, baseUrl).map { originRepository => getRepository(originUserName, originRepositoryName, baseUrl).map { originRepository =>
@@ -225,7 +225,7 @@ trait PullRequestsControllerBase extends ControllerBase {
} }
}) })
get("/:owner/:repository/compare/*...*")(collaboratorsOnly { repository => get("/:owner/:repository/compare/*...*")(referrersOnly { repository =>
val Seq(origin, forked) = multiParams("splat") val Seq(origin, forked) = multiParams("splat")
val (originOwner, tmpOriginBranch) = parseCompareIdentifie(origin, repository.owner) val (originOwner, tmpOriginBranch) = parseCompareIdentifie(origin, repository.owner)
val (forkedOwner, tmpForkedBranch) = parseCompareIdentifie(forked, repository.owner) val (forkedOwner, tmpForkedBranch) = parseCompareIdentifie(forked, repository.owner)
@@ -264,7 +264,8 @@ trait PullRequestsControllerBase extends ControllerBase {
checkConflict(originOwner, repository.name, originBranch, forkedOwner, repository.name, forkedBranch), checkConflict(originOwner, repository.name, originBranch, forkedOwner, repository.name, forkedBranch),
repository, repository,
originRepository, originRepository,
forkedRepository) forkedRepository,
hasWritePermission(repository.owner, repository.name, context.loginAccount))
} }
} }
case _ => NotFound case _ => NotFound

View File

@@ -8,7 +8,8 @@
hasConflict: Boolean, hasConflict: Boolean,
repository: service.RepositoryService.RepositoryInfo, repository: service.RepositoryService.RepositoryInfo,
originRepository: service.RepositoryService.RepositoryInfo, originRepository: service.RepositoryService.RepositoryInfo,
forkedRepository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context) forkedRepository: service.RepositoryService.RepositoryInfo,
hasWritePermission: Boolean)(implicit context: app.Context)
@import context._ @import context._
@import view.helpers._ @import view.helpers._
@import org.eclipse.jgit.diff.DiffEntry.ChangeType @import org.eclipse.jgit.diff.DiffEntry.ChangeType
@@ -44,7 +45,7 @@
} }
</div> </div>
</div> </div>
@if(commits.nonEmpty){ @if(commits.nonEmpty && hasWritePermission){
<div style="margin-bottom: 10px;" id="create-pull-request"> <div style="margin-bottom: 10px;" id="create-pull-request">
<a href="#" class="btn" id="show-form">Click to create a pull request for this comparison</a> <a href="#" class="btn" id="show-form">Click to create a pull request for this comparison</a>
</div> </div>