mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-06 13:35:50 +01:00
Fixed page name validation.
This commit is contained in:
@@ -8,7 +8,14 @@ class WikiController extends ControllerBase {
|
||||
|
||||
case class WikiPageEditForm(pageName: String, content: String, message: Option[String], currentPageName: String)
|
||||
|
||||
val form = mapping(
|
||||
val newForm = mapping(
|
||||
"pageName" -> trim(label("Page name" , text(required, maxlength(40), pageName, unique))),
|
||||
"content" -> trim(label("Content" , text(required))),
|
||||
"message" -> trim(label("Message" , optional(text()))),
|
||||
"currentPageName" -> trim(label("Current page name" , text()))
|
||||
)(WikiPageEditForm.apply)
|
||||
|
||||
val editForm = mapping(
|
||||
"pageName" -> trim(label("Page name" , text(required, maxlength(40), pageName))),
|
||||
"content" -> trim(label("Content" , text(required))),
|
||||
"message" -> trim(label("Message" , optional(text()))),
|
||||
@@ -82,7 +89,7 @@ class WikiController extends ControllerBase {
|
||||
JGitUtil.getRepositoryInfo(owner, repository, servletContext))
|
||||
}
|
||||
|
||||
post("/:owner/:repository/wiki/_save", form){ form =>
|
||||
post("/:owner/:repository/wiki/_edit", editForm){ form =>
|
||||
val owner = params("owner")
|
||||
val repository = params("repository")
|
||||
|
||||
@@ -100,6 +107,16 @@ class WikiController extends ControllerBase {
|
||||
JGitUtil.getRepositoryInfo(owner, repository, servletContext))
|
||||
}
|
||||
|
||||
post("/:owner/:repository/wiki/_new", newForm){ form =>
|
||||
val owner = params("owner")
|
||||
val repository = params("repository")
|
||||
|
||||
WikiUtil.savePage(owner, repository, form.currentPageName, form.pageName,
|
||||
form.content, context.loginUser, form.message.getOrElse(""))
|
||||
|
||||
redirect("%s/%s/wiki/%s".format(owner, repository, form.pageName))
|
||||
}
|
||||
|
||||
get("/:owner/:repository/wiki/_pages"){
|
||||
val owner = params("owner")
|
||||
val repository = params("repository")
|
||||
@@ -124,8 +141,16 @@ class WikiController extends ControllerBase {
|
||||
def validate(name: String, value: String): Option[String] = {
|
||||
if(!value.matches("^[a-zA-Z0-9\\-_]+$")){
|
||||
Some("Page name contains invalid character.")
|
||||
// } else if(WikiUtil.getPageList(params("owner"), params("repository")).contains(value)){
|
||||
// Some("Page already exists.")
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def unique: Constraint = new Constraint(){
|
||||
def validate(name: String, value: String): Option[String] = {
|
||||
if(WikiUtil.getPageList(params("owner"), params("repository")).contains(value)){
|
||||
Some("Page already exists.")
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user