aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/ServiceRequestContext.scala
diff options
context:
space:
mode:
authorZach Smith <zach@driver.xyz>2017-10-16 09:47:54 -0700
committerZach Smith <zach@driver.xyz>2017-10-16 09:47:54 -0700
commit8a34b953fa480bfea7e80a46eb4de6b20b4bca68 (patch)
treed1463faae2068db92089301fb3140f11e9a57b5c /src/main/scala/xyz/driver/core/rest/ServiceRequestContext.scala
parent6e9f40e4cacedfab43c92248d425866d73ea700e (diff)
downloaddriver-core-8a34b953fa480bfea7e80a46eb4de6b20b4bca68.tar.gz
driver-core-8a34b953fa480bfea7e80a46eb4de6b20b4bca68.tar.bz2
driver-core-8a34b953fa480bfea7e80a46eb4de6b20b4bca68.zip
Move AuthorizedServiceRequestContext into ServiceRequestContext.scala
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/ServiceRequestContext.scala')
-rw-r--r--src/main/scala/xyz/driver/core/rest/ServiceRequestContext.scala23
1 files changed, 23 insertions, 0 deletions
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)"
+}