diff --git a/src/main/scala/app/AccountController.scala b/src/main/scala/app/AccountController.scala index d19af7e..d0a0a89 100644 --- a/src/main/scala/app/AccountController.scala +++ b/src/main/scala/app/AccountController.scala @@ -5,6 +5,7 @@ import util.StringUtil._ import util.Directory._ import util.ControlUtil._ +import ssh.SshUtil import jp.sf.amateras.scalatra.forms._ import org.apache.commons.io.FileUtils import org.scalatra.i18n.Messages @@ -49,7 +50,7 @@ val sshKeyForm = mapping( "title" -> trim(label("Title", text(required, maxlength(100)))), - "publicKey" -> trim(label("Key" , text(required))) + "publicKey" -> trim(label("Key" , text(required, validPublicKey))) )(SshKeyForm.apply) case class NewGroupForm(groupName: String, url: Option[String], fileId: Option[String], members: String) @@ -435,4 +436,11 @@ }) None else Some("Must select one manager at least.") } } + + private def validPublicKey: Constraint = new Constraint(){ + override def validate(name: String, value: String, messages: Messages): Option[String] = SshUtil.str2PublicKey(value) match { + case Some(_) => None + case None => Some("Key is invalid.") + } + } }