diff options
author | vlad <vlad@driver.xyz> | 2017-07-13 02:27:55 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@driver.xyz> | 2017-07-19 17:28:54 -0700 |
commit | 7f7bd651122754a3df47894b64ddb0456561bbe7 (patch) | |
tree | a7f7a6acfccb1daa90f5a8afdd26ea3819600d69 /src/main/scala/xyz/driver/pdsuicommon/domain/User.scala | |
parent | 99ebbb98068324c2c26dd59484acbe9a8b62ae59 (diff) | |
download | rest-query-7f7bd651122754a3df47894b64ddb0456561bbe7.tar.gz rest-query-7f7bd651122754a3df47894b64ddb0456561bbe7.tar.bz2 rest-query-7f7bd651122754a3df47894b64ddb0456561bbe7.zip |
Updates for authenticationv0.2.2
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/domain/User.scala')
-rw-r--r-- | src/main/scala/xyz/driver/pdsuicommon/domain/User.scala | 88 |
1 files changed, 83 insertions, 5 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/domain/User.scala b/src/main/scala/xyz/driver/pdsuicommon/domain/User.scala index 4920176..654af1a 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/domain/User.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/domain/User.scala @@ -2,7 +2,7 @@ package xyz.driver.pdsuicommon.domain import java.math.BigInteger import java.security.SecureRandom -import java.time.LocalDateTime +import java.time.{Instant, LocalDateTime, ZoneId} import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.domain.User.Role @@ -11,10 +11,22 @@ import xyz.driver.pdsuicommon.utils.Utils final case class User(id: StringId[User], email: Email, name: String, - role: Role, - passwordHash: PasswordHash, + roles: Set[Role], latestActivity: Option[LocalDateTime], - deleted: Option[LocalDateTime]) + deleted: Option[LocalDateTime]) { + + def this(driverUser: xyz.driver.entities.users.UserInfo) { + this( + id = StringId[xyz.driver.pdsuicommon.domain.User](driverUser.id.value), + email = Email(driverUser.email.toString), + name = driverUser.name.toString, + roles = driverUser.roles.flatMap(User.mapRoles), + latestActivity = + driverUser.lastLoginTime.map(t => Instant.ofEpochMilli(t.millis).atZone(ZoneId.of("Z")).toLocalDateTime), + deleted = Option.empty[LocalDateTime] + ) + } +} object User { @@ -74,7 +86,7 @@ object User { implicit def toPhiString(x: User): PhiString = { import x._ - phi"User(id=$id, role=$role)" + phi"User(id=$id, roles=${Unsafe(roles.map(_.toString).mkString(", "))})" } // SecureRandom is thread-safe, see the implementation @@ -82,4 +94,70 @@ object User { def createPassword: String = new BigInteger(240, random).toString(32) + def mapRoles(coreRole: xyz.driver.core.auth.Role): Set[xyz.driver.pdsuicommon.domain.User.Role] = { + coreRole match { + case xyz.driver.entities.auth.AdministratorRole => + Set( + xyz.driver.pdsuicommon.domain.User.Role.SystemUser, + xyz.driver.pdsuicommon.domain.User.Role.RecordAdmin, + xyz.driver.pdsuicommon.domain.User.Role.TrialAdmin, + xyz.driver.pdsuicommon.domain.User.Role.TreatmentMatchingAdmin + ) + case xyz.driver.entities.auth.RecordAdmin => + Set(xyz.driver.pdsuicommon.domain.User.Role.RecordAdmin) + case xyz.driver.entities.auth.RecordCleaner => + Set(xyz.driver.pdsuicommon.domain.User.Role.RecordCleaner) + case xyz.driver.entities.auth.RecordOrganizer => + Set(xyz.driver.pdsuicommon.domain.User.Role.RecordOrganizer) + case xyz.driver.entities.auth.DocumentExtractor => + Set(xyz.driver.pdsuicommon.domain.User.Role.DocumentExtractor) + case xyz.driver.entities.auth.TrialSummarizer => + Set(xyz.driver.pdsuicommon.domain.User.Role.TrialSummarizer) + case xyz.driver.entities.auth.CriteriaCurator => + Set(xyz.driver.pdsuicommon.domain.User.Role.CriteriaCurator) + case xyz.driver.entities.auth.TrialAdmin => + Set(xyz.driver.pdsuicommon.domain.User.Role.TrialAdmin) + case xyz.driver.entities.auth.EligibilityVerifier => + Set(xyz.driver.pdsuicommon.domain.User.Role.EligibilityVerifier) + case xyz.driver.entities.auth.TreatmentMatchingAdmin => + Set(xyz.driver.pdsuicommon.domain.User.Role.TreatmentMatchingAdmin) + case xyz.driver.entities.auth.RoutesCurator => + Set(xyz.driver.pdsuicommon.domain.User.Role.RoutesCurator) + case xyz.driver.entities.auth.ResearchOncologist => + Set(xyz.driver.pdsuicommon.domain.User.Role.ResearchOncologist) + case _ => + Set.empty[xyz.driver.pdsuicommon.domain.User.Role] + } + } + + def mapRolesToDriver(pdsuiRole: xyz.driver.pdsuicommon.domain.User.Role): Set[xyz.driver.core.auth.Role] = { + pdsuiRole match { + case xyz.driver.pdsuicommon.domain.User.Role.SystemUser => + Set(xyz.driver.entities.auth.AdministratorRole) + case xyz.driver.pdsuicommon.domain.User.Role.RecordAdmin => + Set(xyz.driver.entities.auth.RecordAdmin) + case xyz.driver.pdsuicommon.domain.User.Role.RecordCleaner => + Set(xyz.driver.entities.auth.RecordCleaner) + case xyz.driver.pdsuicommon.domain.User.Role.RecordOrganizer => + Set(xyz.driver.entities.auth.RecordOrganizer) + case xyz.driver.pdsuicommon.domain.User.Role.DocumentExtractor => + Set(xyz.driver.entities.auth.DocumentExtractor) + case xyz.driver.pdsuicommon.domain.User.Role.TrialSummarizer => + Set(xyz.driver.entities.auth.TrialSummarizer) + case xyz.driver.pdsuicommon.domain.User.Role.CriteriaCurator => + Set(xyz.driver.entities.auth.CriteriaCurator) + case xyz.driver.pdsuicommon.domain.User.Role.TrialAdmin => + Set(xyz.driver.entities.auth.TrialAdmin) + case xyz.driver.pdsuicommon.domain.User.Role.EligibilityVerifier => + Set(xyz.driver.entities.auth.EligibilityVerifier) + case xyz.driver.pdsuicommon.domain.User.Role.TreatmentMatchingAdmin => + Set(xyz.driver.entities.auth.TreatmentMatchingAdmin) + case xyz.driver.pdsuicommon.domain.User.Role.RoutesCurator => + Set(xyz.driver.entities.auth.RoutesCurator) + case xyz.driver.pdsuicommon.domain.User.Role.ResearchOncologist => + Set(xyz.driver.entities.auth.ResearchOncologist) + case _ => + Set.empty[xyz.driver.core.auth.Role] + } + } } |