lila/app/controllers/Cli.scala
2017-09-28 21:15:05 -04:00

32 lines
831 B
Scala

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))
}
}