From 8a34b953fa480bfea7e80a46eb4de6b20b4bca68 Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Mon, 16 Oct 2017 09:47:54 -0700 Subject: Move AuthorizedServiceRequestContext into ServiceRequestContext.scala --- .../driver/core/rest/ServiceRequestContext.scala | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/main/scala/xyz/driver/core/rest/ServiceRequestContext.scala') diff --git a/src/main/scala/xyz/driver/core/rest/ServiceRequestContext.scala b/src/main/scala/xyz/driver/core/rest/ServiceRequestContext.scala index 5235da6..4020d57 100644 --- a/src/main/scala/xyz/driver/core/rest/ServiceRequestContext.scala +++ b/src/main/scala/xyz/driver/core/rest/ServiceRequestContext.scala @@ -37,3 +37,26 @@ class ServiceRequestContext(val trackingId: String = generators.nextUuid().toStr override def toString: String = s"ServiceRequestContext($trackingId, $contextHeaders)" } + +class AuthorizedServiceRequestContext[U <: User](override val trackingId: String = generators.nextUuid().toString, + override val contextHeaders: Map[String, String] = + Map.empty[String, String], + val authenticatedUser: U) + extends ServiceRequestContext { + + def withPermissionsToken(permissionsToken: PermissionsToken): AuthorizedServiceRequestContext[U] = + new AuthorizedServiceRequestContext[U]( + trackingId, + contextHeaders.updated(AuthProvider.PermissionsTokenHeader, permissionsToken.value), + authenticatedUser) + + override def hashCode(): Int = 31 * super.hashCode() + authenticatedUser.hashCode() + + override def equals(obj: Any): Boolean = obj match { + case ctx: AuthorizedServiceRequestContext[U] => super.equals(ctx) && ctx.authenticatedUser == authenticatedUser + case _ => false + } + + override def toString: String = + s"AuthorizedServiceRequestContext($trackingId, $contextHeaders, $authenticatedUser)" +} -- cgit v1.2.3