diff --git a/src/main/scala/app/RepositorySettingsController.scala b/src/main/scala/app/RepositorySettingsController.scala index 26a35fd..f47119d 100644 --- a/src/main/scala/app/RepositorySettingsController.scala +++ b/src/main/scala/app/RepositorySettingsController.scala @@ -48,7 +48,7 @@ case class TransferOwnerShipForm(newOwner: String) val transferForm = mapping( - "newOwner" -> trim(label("New owner", text(required))) // TODO user and repository existence check + "newOwner" -> trim(label("New owner", text(required, transferUser))) )(TransferOwnerShipForm.apply) /** @@ -256,4 +256,20 @@ } } + /** + * Provides Constraint to validate the repository transfer user. + */ + private def transferUser: Constraint = new Constraint(){ + override def validate(name: String, value: String, messages: Messages): Option[String] = + getAccountByUserName(value) match { + case None => Some("User does not exist.") + case Some(x) => if(x.userName == params("owner")){ + Some("This is current repository owner.") + } else { + params.get("repository").flatMap { repositoryName => + getRepositoryNamesOfUser(x.userName).find(_ == repositoryName).map{ _ => "User already has same repository." } + } + } + } + } } \ No newline at end of file diff --git a/src/main/twirl/settings/transfer.scala.html b/src/main/twirl/settings/transfer.scala.html index c6c8af8..4bf2ff3 100644 --- a/src/main/twirl/settings/transfer.scala.html +++ b/src/main/twirl/settings/transfer.scala.html @@ -1,24 +1,19 @@ @(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context) @import context._ @import view.helpers._ -@html.main("Delete Repository", Some(repository)){ +@html.main("Transfer Ownership", Some(repository)){ @html.header("settings", repository) @menu("transfer", repository){ -
} } - \ No newline at end of file