- private[this] def processCreateUser(event: IMEventModel): Unit = {
- val userId = event.userID
- DEBUG("Creating user from state %s", event)
- val usersDB = _configurator.storeProvider.userStateStore
- usersDB.findUserStateByUserId(userId) match {
- case Just(userState) ⇒
- WARN("User already created, state = %s".format(userState))
- case failed@Failed(e) ⇒
- ERROR("[%s] %s", e.getClass.getName, e.getMessage)
- case NoVal ⇒
- val agreement = RoleAgreements.agreementForRole(event.role)
- DEBUG("User %s assigned agreement %s".format(userId, agreement.name))
-
- this._userState = DefaultUserStateComputations.createInitialUserState(
- userId,
- event.occurredMillis,
- event.isActive, 0.0, List(event.role), agreement.name)
- saveUserState
- DEBUG("Created and stored %s", this._userState)
+ private[this] def _computeAgreementForNewUser(imEvent: IMEventModel): String = {
+ // FIXME: Implement based on the role
+ "default"
+ }
+
+ private[this] def processCreateUser(imEvent: IMEventModel): Unit = {
+ val userID = imEvent.userID
+ val store = _configurator.storeProvider.userStateStore
+ // try find user state. normally should ot exist
+ val latestUserStateOpt = store.findLatestUserStateByUserID(userID)
+ if(latestUserStateOpt.isDefined) {
+ logger.error("Got %s(%s, %s) but user already exists. Ingoring".format(
+ userID,
+ shortClassNameOf(imEvent),
+ imEvent.eventType))
+
+ return