From b30a6a75425ca0e5d35b2bafc039c5dc7f1c3420 Mon Sep 17 00:00:00 2001 From: takezoe Date: Tue, 4 Jun 2013 03:16:55 +0900 Subject: [PATCH] Add validation to adding collaborator. --- src/main/scala/app/SettingsController.scala | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/scala/app/SettingsController.scala b/src/main/scala/app/SettingsController.scala index ff9ece7a2..3c0990669 100644 --- a/src/main/scala/app/SettingsController.scala +++ b/src/main/scala/app/SettingsController.scala @@ -11,7 +11,7 @@ trait SettingsControllerBase extends ControllerBase { self: RepositoryService wi case class CollaboratorForm(userName: String) val form = mapping( - "userName" -> trim(label("Username", text(required, existUser))) + "userName" -> trim(label("Username", text(required, collaborator))) )(CollaboratorForm.apply) get("/:owner/:repository/settings") { @@ -41,12 +41,19 @@ trait SettingsControllerBase extends ControllerBase { self: RepositoryService wi redirect("/%s/%s/settings/collaborators".format(owner, repository)) } - def existUser: Constraint = new Constraint(){ + def collaborator: Constraint = new Constraint(){ def validate(name: String, value: String): Option[String] = { getAccountByUserName(value) match { case None => Some("User does not exist.") case Some(x) if(x.userName == context.loginAccount.get.userName) => Some("User can access this repository already.") - case Some(x) => None + case Some(x) => { + val paths = request.getRequestURI.split("/") + if(getCollaborators(paths(1), paths(2)).contains(x.userName)){ + Some("User can access this repository already.") + } else { + None + } + } } } }