diff options
author | Zach Smith <zach@driver.xyz> | 2017-11-03 05:15:55 -0700 |
---|---|---|
committer | Zach Smith <zach@driver.xyz> | 2017-11-03 05:17:26 -0700 |
commit | 80db7d7bec56235d0c4a8414ec624d514ec56663 (patch) | |
tree | 7f37a047d705f9556a46f7b6f7370eae8053b2b0 /src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala | |
parent | 101c451480649c6d4aa8efb0294adf439512f8be (diff) | |
download | driver-core-80db7d7bec56235d0c4a8414ec624d514ec56663.tar.gz driver-core-80db7d7bec56235d0c4a8414ec624d514ec56663.tar.bz2 driver-core-80db7d7bec56235d0c4a8414ec624d514ec56663.zip |
Add originatingIP to ServiceRequestContext
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala b/src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala index 4020d57..bd8f078 100644 --- a/src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala +++ b/src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala @@ -1,5 +1,7 @@ package xyz.driver.core.rest +import java.net.InetAddress + import xyz.driver.core.auth.{AuthToken, PermissionsToken, User} import xyz.driver.core.generators @@ -7,6 +9,7 @@ import scalaz.Scalaz.{mapEqual, stringInstance} import scalaz.syntax.equal._ class ServiceRequestContext(val trackingId: String = generators.nextUuid().toString, + val originatingIP: Option[InetAddress] = None, val contextHeaders: Map[String, String] = Map.empty[String, String]) { def authToken: Option[AuthToken] = contextHeaders.get(AuthProvider.AuthenticationTokenHeader).map(AuthToken.apply) @@ -17,28 +20,32 @@ class ServiceRequestContext(val trackingId: String = generators.nextUuid().toStr def withAuthToken(authToken: AuthToken): ServiceRequestContext = new ServiceRequestContext( trackingId, + originatingIP, contextHeaders.updated(AuthProvider.AuthenticationTokenHeader, authToken.value) ) def withAuthenticatedUser[U <: User](authToken: AuthToken, user: U): AuthorizedServiceRequestContext[U] = new AuthorizedServiceRequestContext( trackingId, + originatingIP, contextHeaders.updated(AuthProvider.AuthenticationTokenHeader, authToken.value), user ) override def hashCode(): Int = - Seq[Any](trackingId, contextHeaders).foldLeft(31)((result, obj) => 31 * result + obj.hashCode()) + Seq[Any](trackingId, originatingIP, contextHeaders).foldLeft(31)((result, obj) => 31 * result + obj.hashCode()) override def equals(obj: Any): Boolean = obj match { - case ctx: ServiceRequestContext => trackingId === ctx.trackingId && contextHeaders === ctx.contextHeaders - case _ => false + case ctx: ServiceRequestContext => + trackingId === ctx.trackingId && originatingIP == originatingIP && contextHeaders === ctx.contextHeaders + case _ => false } override def toString: String = s"ServiceRequestContext($trackingId, $contextHeaders)" } class AuthorizedServiceRequestContext[U <: User](override val trackingId: String = generators.nextUuid().toString, + override val originatingIP: Option[InetAddress] = None, override val contextHeaders: Map[String, String] = Map.empty[String, String], val authenticatedUser: U) @@ -47,6 +54,7 @@ class AuthorizedServiceRequestContext[U <: User](override val trackingId: String def withPermissionsToken(permissionsToken: PermissionsToken): AuthorizedServiceRequestContext[U] = new AuthorizedServiceRequestContext[U]( trackingId, + originatingIP, contextHeaders.updated(AuthProvider.PermissionsTokenHeader, permissionsToken.value), authenticatedUser) |