package controllers import lila.app._ import play.api.mvc._ import play.api.data._, Forms._ import lila.user.User.ClearPassword object Cli extends LilaController { private lazy val form = Form(tuple( "command" -> nonEmptyText, "password" -> nonEmptyText )) def command = OpenBody { implicit ctx => implicit val req = ctx.body form.bindFromRequest.fold( err => fuccess(BadRequest("invalid cli call")), { case (command, password) => CliAuth(password) { Env.api.cli(command.split(" ").toList) map { res => Ok(res) } } } ) } private def CliAuth(password: String)(op: => Fu[Result]): Fu[Result] = Env.user.authenticator.authenticateById(Env.api.CliUsername, ClearPassword(password)).map(_.isDefined) flatMap { _.fold(op, fuccess(Unauthorized)) } }