diff --git a/src/main/scala/app/WikiController.scala b/src/main/scala/app/WikiController.scala index cb709e5..0ed2dd2 100644 --- a/src/main/scala/app/WikiController.scala +++ b/src/main/scala/app/WikiController.scala @@ -33,7 +33,7 @@ getRepository(owner, repository, baseUrl) match { case Some(repoInfo) => getWikiPage(owner, repository, "Home") match { - case Some(page) => wiki.html.wiki("Home", page, repoInfo, isWritable(owner, repository)) + case Some(page) => wiki.html.wiki("Home", page, repoInfo, isWritable(owner, repository, context.loginAccount)) case None => redirect("/%s/%s/wiki/Home/_edit".format(owner, repository)) } case None => NotFound() @@ -46,7 +46,7 @@ val pageName = params("page") getWikiPage(owner, repository, pageName) match { - case Some(page) => wiki.html.wiki(pageName, page, getRepository(owner, repository, baseUrl).get, isWritable(owner, repository)) + case Some(page) => wiki.html.wiki(pageName, page, getRepository(owner, repository, baseUrl).get, isWritable(owner, repository, context.loginAccount)) case None => redirect("/%s/%s/wiki/%s/_edit".format(owner, repository, pageName)) // TODO URLEncode } }) @@ -145,7 +145,7 @@ val repository = params("repository") getRepository(owner, repository, baseUrl) match { - case Some(repoInfo) => wiki.html.wikipages(getWikiPageList(owner, repository), repoInfo, isWritable(owner, repository)) + case Some(repoInfo) => wiki.html.wikipages(getWikiPageList(owner, repository), repoInfo, isWritable(owner, repository, context.loginAccount)) case None => NotFound() } }) @@ -176,15 +176,6 @@ } }) - private def isWritable(owner: String, repository: String): Boolean = { - context.loginAccount match { - case Some(a) if(a.isAdmin) => true - case Some(a) if(a.userName == owner) => true - case Some(a) if(getCollaborators(owner, repository).contains(a.userName)) => true - case _ => false - } - } - private def unique: Constraint = new Constraint(){ def validate(name: String, value: String): Option[String] = getWikiPageList(params("owner"), params("repository")).find(_ == value).map(_ => "Page already exists.") diff --git a/src/main/scala/service/RepositoryService.scala b/src/main/scala/service/RepositoryService.scala index 7982d04..f07851b 100644 --- a/src/main/scala/service/RepositoryService.scala +++ b/src/main/scala/service/RepositoryService.scala @@ -209,6 +209,15 @@ (c.userName is userName.bind) && (c.repositoryName is repositoryName.bind) } sortBy(_.collaboratorName) list) map(_.collaboratorName) + def isWritable(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 + case Some(a) if(getCollaborators(owner, repository).contains(a.userName)) => true + case _ => false + } + } + } object RepositoryService {