diff options
Diffstat (limited to 'src/main/scala/xyz/driver/common/auth')
3 files changed, 59 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/common/auth/AnonymousRequestContext.scala b/src/main/scala/xyz/driver/common/auth/AnonymousRequestContext.scala new file mode 100644 index 0000000..2e4b55c --- /dev/null +++ b/src/main/scala/xyz/driver/common/auth/AnonymousRequestContext.scala @@ -0,0 +1,12 @@ +package xyz.driver.common.auth + +class AnonymousRequestContext(val requestId: RequestId) { + + override def equals(that: Any): Boolean = { + that.getClass == classOf[AnonymousRequestContext] && + that.asInstanceOf[AnonymousRequestContext].requestId == requestId + } + + override def hashCode(): Int = requestId.hashCode() + +} diff --git a/src/main/scala/xyz/driver/common/auth/AuthenticatedRequestContext.scala b/src/main/scala/xyz/driver/common/auth/AuthenticatedRequestContext.scala new file mode 100644 index 0000000..b211e12 --- /dev/null +++ b/src/main/scala/xyz/driver/common/auth/AuthenticatedRequestContext.scala @@ -0,0 +1,32 @@ +package xyz.driver.common.auth + +import xyz.driver.common.logging._ +import xyz.driver.common.domain.User + +class AuthenticatedRequestContext(val executor: User, + override val requestId: RequestId) extends AnonymousRequestContext(requestId) { + + override def equals(that: Any): Boolean = { + that.getClass == this.getClass && { + val another = that.asInstanceOf[AuthenticatedRequestContext] + another.executor == executor && another.requestId == requestId + } + } + + override def hashCode(): Int = { + val initial = 37 + val first = initial * 17 + executor.hashCode() + first * 17 + requestId.hashCode() + } + +} + +object AuthenticatedRequestContext { + + def apply(executor: User) = new AuthenticatedRequestContext(executor, RequestId()) + + implicit def toPhiString(x: AuthenticatedRequestContext): PhiString = { + phi"AuthenticatedRequestContext(executor=${x.executor}, requestId=${x.requestId})" + } + +} diff --git a/src/main/scala/xyz/driver/common/auth/RequestId.scala b/src/main/scala/xyz/driver/common/auth/RequestId.scala new file mode 100644 index 0000000..771145c --- /dev/null +++ b/src/main/scala/xyz/driver/common/auth/RequestId.scala @@ -0,0 +1,15 @@ +package xyz.driver.common.auth + +import xyz.driver.common.logging._ +import xyz.driver.common.auth.RequestId._ +import xyz.driver.common.utils.RandomUtils + +final case class RequestId(value: String = RandomUtils.randomString(IdLength)) + +object RequestId { + + private val IdLength = 20 + + implicit def toPhiString(x: RequestId): PhiString = phi"RequestId(${Unsafe(x.value)})" + +} |