mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-07 14:05:52 +01:00
Control wiki buttons by permission.
This commit is contained in:
@@ -32,8 +32,8 @@ trait WikiControllerBase extends ControllerBase { self: WikiService with Reposit
|
|||||||
val repository = params("repository")
|
val repository = params("repository")
|
||||||
|
|
||||||
getWikiPage(owner, repository, "Home") match {
|
getWikiPage(owner, repository, "Home") match {
|
||||||
case Some(page) => wiki.html.wiki("Home", page, getRepository(owner, repository, servletContext).get)
|
case Some(page) => wiki.html.wiki("Home", page, getRepository(owner, repository, servletContext).get, isWritable(owner, repository))
|
||||||
case None => wiki.html.wikiedit("Home", None, getRepository(owner, repository, servletContext).get)
|
case None => redirect("/%s/%s/wiki/Home/_edit".format(owner, repository))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,8 +43,8 @@ trait WikiControllerBase extends ControllerBase { self: WikiService with Reposit
|
|||||||
val pageName = params("page")
|
val pageName = params("page")
|
||||||
|
|
||||||
getWikiPage(owner, repository, pageName) match {
|
getWikiPage(owner, repository, pageName) match {
|
||||||
case Some(page) => wiki.html.wiki(pageName, page, getRepository(owner, repository, servletContext).get)
|
case Some(page) => wiki.html.wiki(pageName, page, getRepository(owner, repository, servletContext).get, isWritable(owner, repository))
|
||||||
case None => wiki.html.wikiedit(pageName, None, getRepository(owner, repository, servletContext).get)
|
case None => redirect("/%s/%s/wiki/%s/_edit".format(owner, repository, pageName)) // TODO URLEncode
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,7 +132,7 @@ trait WikiControllerBase extends ControllerBase { self: WikiService with Reposit
|
|||||||
val owner = params("owner")
|
val owner = params("owner")
|
||||||
val repository = params("repository")
|
val repository = params("repository")
|
||||||
|
|
||||||
wiki.html.wikipages(getWikiPageList(owner, repository), getRepository(owner, repository, servletContext).get)
|
wiki.html.wikipages(getWikiPageList(owner, repository), getRepository(owner, repository, servletContext).get, isWritable(owner, repository))
|
||||||
}
|
}
|
||||||
|
|
||||||
get("/:owner/:repository/wiki/_history"){
|
get("/:owner/:repository/wiki/_history"){
|
||||||
@@ -166,6 +166,15 @@ trait WikiControllerBase extends ControllerBase { self: WikiService with Reposit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def isWritable(owner: String, repository: String): Boolean = {
|
||||||
|
context.loginAccount match {
|
||||||
|
case Some(a) if(a.userType == AccountService.Administrator) => true
|
||||||
|
case Some(a) if(a.userName == owner) => true
|
||||||
|
case Some(a) if(getCollaborators(owner, repository).contains(a.userName)) => true
|
||||||
|
case _ => false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def unique: Constraint = new Constraint(){
|
def unique: Constraint = new Constraint(){
|
||||||
def validate(name: String, value: String): Option[String] = {
|
def validate(name: String, value: String): Option[String] = {
|
||||||
if(getWikiPageList(params("owner"), params("repository")).contains(value)){
|
if(getWikiPageList(params("owner"), params("repository")).contains(value)){
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@(pageName: String, page: service.WikiService.WikiPageInfo, repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
|
@(pageName: String, page: service.WikiService.WikiPageInfo, repository: service.RepositoryService.RepositoryInfo, isWritable: Boolean)(implicit context: app.Context)
|
||||||
@import view.helpers
|
@import view.helpers
|
||||||
@import context._
|
@import context._
|
||||||
@html.main(pageName + " - " + repository.owner + "/" + repository.name){
|
@html.main(pageName + " - " + repository.owner + "/" + repository.name){
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<li class="pull-right">
|
<li class="pull-right">
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
@if(loginAccount.isDefined){
|
@if(isWritable){
|
||||||
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_new">New Page</a>
|
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_new">New Page</a>
|
||||||
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_edit">Edit Page</a>
|
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_edit">Edit Page</a>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@(pages: List[String], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
|
@(pages: List[String], repository: service.RepositoryService.RepositoryInfo, isWritable: Boolean)(implicit context: app.Context)
|
||||||
@import view.helpers
|
@import view.helpers
|
||||||
@import context._
|
@import context._
|
||||||
@html.main("Pages - " + repository.owner + "/" + repository.name){
|
@html.main("Pages - " + repository.owner + "/" + repository.name){
|
||||||
@@ -10,7 +10,9 @@
|
|||||||
</li>
|
</li>
|
||||||
<li class="pull-right">
|
<li class="pull-right">
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
|
@if(isWritable){
|
||||||
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_new">New Page</a>
|
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_new">New Page</a>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
Reference in New Issue
Block a user