From 795f4f29e5f9148ffc20806c421a57b1f582fd68 Mon Sep 17 00:00:00 2001 From: Felipe D'Abrantes <felidabrantes@gmail> Date: Fri, 14 Apr 2023 00:45:29 +0100 Subject: [PATCH] Include JWT in authentication request --- .../models/actions/AuthenticationFilter.scala | 2 +- .../models/actions/AuthenticationRequest.scala | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/backend-services/feed-service/app/models/actions/AuthenticationFilter.scala b/backend-services/feed-service/app/models/actions/AuthenticationFilter.scala index 3e8ed31a..8b7b752a 100644 --- a/backend-services/feed-service/app/models/actions/AuthenticationFilter.scala +++ b/backend-services/feed-service/app/models/actions/AuthenticationFilter.scala @@ -21,7 +21,7 @@ class AuthenticationFilter @Inject() (implicit val executionContext: ExecutionCo * @return An optional Forbidden Result with which to abort the request. */ override def filter[A](request: AuthenticationRequest[A]): Future[Option[Result]] = Future.successful { - if (!request.userId.isDefined) + if (!request.requesterId.isDefined) Some(Results.Forbidden("Invalid JWT Token")) else None diff --git a/backend-services/feed-service/app/models/actions/AuthenticationRequest.scala b/backend-services/feed-service/app/models/actions/AuthenticationRequest.scala index 3bd5452f..6573cd15 100644 --- a/backend-services/feed-service/app/models/actions/AuthenticationRequest.scala +++ b/backend-services/feed-service/app/models/actions/AuthenticationRequest.scala @@ -14,7 +14,8 @@ import play.api.libs.json.Json import javax.inject.Inject -class AuthenticationRequest[A](val userId: Option[ObjectId], request: Request[A]) extends WrappedRequest[A](request) +class AuthenticationRequest[A](val jwt: String, val requesterId: Option[ObjectId], request: Request[A]) + extends WrappedRequest[A](request) /** @@ -29,9 +30,8 @@ class AuthenticationTransformer @Inject() (implicit val executionContext: Execut * @return The new parameter to pass to the Action block. */ override def transform[A](request: Request[A]) = Future.successful { - println(request) - val userId: Option[ObjectId] = processJWT(request) - new AuthenticationRequest(userId, request) + val (jwt: String, requesterId: Option[ObjectId]) = processJWT(request) + new AuthenticationRequest(jwt, requesterId, request) } /** @@ -40,7 +40,7 @@ class AuthenticationTransformer @Inject() (implicit val executionContext: Execut * @param request The incoming request. * @return The user ID specified in the JWT's payload. */ - def processJWT[A](request: Request[A]): Option[ObjectId] = { + def processJWT[A](request: Request[A]): (String, Option[ObjectId]) = { val privateKey = ConfigFactory.load().getString("jwt.privateKey") try { @@ -52,14 +52,14 @@ class AuthenticationTransformer @Inject() (implicit val executionContext: Execut val content = payload.get.content val jsonContent = Json.parse(content) - val userId = (jsonContent \ "userId").as[String] + val requesterId = (jsonContent \ "userId").as[String] - Some(new ObjectId(userId)) + (token, Some(new ObjectId(requesterId))) } catch { case ex: Throwable => { println(s"JWT Error: $ex") - None + ("", None) } } } -- GitLab