diff --git a/src/main/scala/gitbucket/core/controller/AccountController.scala b/src/main/scala/gitbucket/core/controller/AccountController.scala index d682509..5383eaa 100644 --- a/src/main/scala/gitbucket/core/controller/AccountController.scala +++ b/src/main/scala/gitbucket/core/controller/AccountController.scala @@ -91,7 +91,7 @@ val newRepositoryForm = mapping( "owner" -> trim(label("Owner" , text(required, maxlength(40), identifier, existsAccount))), - "name" -> trim(label("Repository name", text(required, maxlength(40), identifier, uniqueRepository))), + "name" -> trim(label("Repository name", text(required, maxlength(40), repository, uniqueRepository))), "description" -> trim(label("Description" , optional(text()))), "isPrivate" -> trim(label("Repository Type", boolean())), "createReadme" -> trim(label("Create README" , boolean())) diff --git a/src/main/scala/gitbucket/core/util/Validations.scala b/src/main/scala/gitbucket/core/util/Validations.scala index 7aa533e..9c97661 100644 --- a/src/main/scala/gitbucket/core/util/Validations.scala +++ b/src/main/scala/gitbucket/core/util/Validations.scala @@ -6,7 +6,7 @@ trait Validations { /** - * Constraint for the identifier such as user name, repository name or page name. + * Constraint for the identifier such as user name or page name. */ def identifier: Constraint = new Constraint(){ override def validate(name: String, value: String, messages: Messages): Option[String] = @@ -19,6 +19,23 @@ } } + /** + * Constraint for the repository identifier. + */ + def repository: Constraint = new Constraint(){ + override def validate(name: String, value: String, messages: Messages): Option[String] = + if(!value.matches("[a-zA-Z0-9\\-\\+_.]+")){ + Some(s"${name} contains invalid character.") + } else if(value.startsWith("_") || value.startsWith("-")){ + Some(s"${name} starts with invalid character.") + } else { + None + } + } + + /** + * Constraint for the color pattern. + */ def color = pattern("#[0-9a-fA-F]{6}") /**