Updated external user service to return email. The email is a new identifier.

This commit is contained in:
Šesták Vít
2016-02-11 09:54:49 +01:00
parent 2d3e3b5164
commit f4fa0ee948
5 changed files with 31 additions and 19 deletions

View File

@@ -8,6 +8,6 @@ class AllowAllCredentialsVerificationService(app: play.api.Application) extends
sys.error("allow-all can be used in dev mode only")
}
override def verifyCredentials(username: String, password: String): Future[Boolean] = Future.successful(true)
override def verifyCredentials(username: String, password: String): Future[Either[String, String]] = Future.successful(Right(username))
}

View File

@@ -3,5 +3,5 @@ package services
import scala.concurrent.Future
trait CredentialsVerificationService {
def verifyCredentials(username: String, password: String): Future[Boolean]
def verifyCredentials(username: String, password: String): Future[Either[String, String]]
}

View File

@@ -5,12 +5,18 @@ import play.api.libs.ws.{WS, WSClient}
import scala.concurrent.{Future, ExecutionContext}
case class LoginResponse(error: Option[String], email: Option[String])
class ExternalCredentialsVerificationService(url: String)(implicit executionContext: ExecutionContext, wSClient: WSClient) extends CredentialsVerificationService{
override def verifyCredentials(username: String, password: String): Future[Boolean] = {
private implicit val loginResponseFormat = Json.format[LoginResponse]
override def verifyCredentials(username: String, password: String): Future[Either[String, String]] = {
WS.clientUrl(url).post(Json.toJson(Map("username" -> username, "password" -> password))).map{ response =>
response.body match {
case "OK" => true
case "bad" => false
val loginResponse = loginResponseFormat.reads(response.json).get
loginResponse.error match {
case Some(err) => Left(err)
case None => Right(loginResponse.email.get)
}
}
}