diff --git a/src/main/scala/app/IssuesController.scala b/src/main/scala/app/IssuesController.scala index 23d40c6..5cc89a8 100644 --- a/src/main/scala/app/IssuesController.scala +++ b/src/main/scala/app/IssuesController.scala @@ -247,7 +247,7 @@ condition, filter, repositoryInfo, - isWritable(owner, repository, context.loginAccount)) + hasWritePermission(owner, repository, context.loginAccount)) } getOrElse NotFound } diff --git a/src/main/scala/app/MilestonesController.scala b/src/main/scala/app/MilestonesController.scala index 7aca76d..92545ec 100644 --- a/src/main/scala/app/MilestonesController.scala +++ b/src/main/scala/app/MilestonesController.scala @@ -30,7 +30,7 @@ issues.milestones.html.list(state, getMilestonesWithIssueCount(owner, repository), repositoryInfo, - isWritable(owner, repository, context.loginAccount)) + hasWritePermission(owner, repository, context.loginAccount)) } getOrElse NotFound }) diff --git a/src/main/scala/app/WikiController.scala b/src/main/scala/app/WikiController.scala index efebbac..40bf12e 100644 --- a/src/main/scala/app/WikiController.scala +++ b/src/main/scala/app/WikiController.scala @@ -33,7 +33,7 @@ getRepository(owner, repository, baseUrl).map { repositoryInfo => getWikiPage(owner, repository, "Home").map { page => - wiki.html.page("Home", page, repositoryInfo, isWritable(owner, repository, context.loginAccount)) + wiki.html.page("Home", page, repositoryInfo, hasWritePermission(owner, repository, context.loginAccount)) } getOrElse redirect("/%s/%s/wiki/Home/_edit".format(owner, repository)) } getOrElse NotFound }) @@ -45,7 +45,7 @@ getRepository(owner, repository, baseUrl).map { repositoryInfo => getWikiPage(owner, repository, pageName).map { page => - wiki.html.page(pageName, page, repositoryInfo, isWritable(owner, repository, context.loginAccount)) + wiki.html.page(pageName, page, repositoryInfo, hasWritePermission(owner, repository, context.loginAccount)) } getOrElse redirect("/%s/%s/wiki/%s/_edit".format(owner, repository, pageName)) // TODO URLEncode } getOrElse NotFound }) @@ -140,7 +140,7 @@ val repository = params("repository") getRepository(owner, repository, baseUrl).map { - wiki.html.pages(getWikiPageList(owner, repository), _, isWritable(owner, repository, context.loginAccount)) + wiki.html.pages(getWikiPageList(owner, repository), _, hasWritePermission(owner, repository, context.loginAccount)) } getOrElse NotFound }) diff --git a/src/main/scala/service/RepositoryService.scala b/src/main/scala/service/RepositoryService.scala index e54b0ae..6a07c47 100644 --- a/src/main/scala/service/RepositoryService.scala +++ b/src/main/scala/service/RepositoryService.scala @@ -183,7 +183,7 @@ def getCollaborators(userName: String, repositoryName: String): List[String] = Query(Collaborators).filter(_.byRepository(userName, repositoryName)).sortBy(_.collaboratorName).list.map(_.collaboratorName) - def isWritable(owner: String, repository: String, loginAccount: Option[Account]): Boolean = { + def hasWritePermission(owner: String, repository: String, loginAccount: Option[Account]): Boolean = { loginAccount match { case Some(a) if(a.isAdmin) => true case Some(a) if(a.userName == owner) => true diff --git a/src/main/scala/servlet/BasicAuthenticationFilter.scala b/src/main/scala/servlet/BasicAuthenticationFilter.scala index a15bfdc..203c518 100644 --- a/src/main/scala/servlet/BasicAuthenticationFilter.scala +++ b/src/main/scala/servlet/BasicAuthenticationFilter.scala @@ -56,6 +56,7 @@ private def isWritableUser(username: String, password: String, repository: RepositoryService.RepositoryInfo): Boolean = { getAccountByUserName(username) match { case Some(account) if(account.password == encrypt(password)) => { + // TODO Use hasWritePermission? (account.isAdmin // administrator || account.userName == repository.owner // repository owner || getCollaborators(repository.owner, repository.name).contains(account.userName)) // collaborator diff --git a/src/main/twirl/issues/list.scala.html b/src/main/twirl/issues/list.scala.html index c0b0290..6d30b32 100644 --- a/src/main/twirl/issues/list.scala.html +++ b/src/main/twirl/issues/list.scala.html @@ -11,7 +11,7 @@ condition: service.IssuesService.IssueSearchCondition, filter: String, repository: service.RepositoryService.RepositoryInfo, - isWritable: Boolean)(implicit context: app.Context) + hasWritePermission: Boolean)(implicit context: app.Context) @import context._ @import view.helpers._ @html.main("Issues - " + repository.owner + "/" + repository.name){ @@ -86,7 +86,7 @@ - @if(isWritable){ + @if(hasWritePermission){

@@ -169,7 +169,7 @@ } -@if(isWritable){ +@if(hasWritePermission){