Skip to main content

Reactivation (Forgot PIN)

After Activation if user forgets their pin then by Reactivation the user can generate a new pin by providing a new activation code and pin - where the activation code can be generated on the SSMS portal. See the test case description on how to do that.

Reactivation flow consists of these events.

Reactivation event flow-diagram

The following diagram shows the working of reactivation.

iOS/Swift

The user needs to trigger a ReactivationEvent, so for Swift you can trigger that by this snippet:

Triggering ReactivationEvent Event (Swift)
    static func performReactivateUser(reactivateRequest: ReactivateUserRequest, completion: @escaping (ActionResult) -> Void) {

let userIdentifier = KsUserIdentifier(tenantId: reactivateRequest.tenantId,
userId: reactivateRequest.userId)
let reactivateEvent = KSMReactivationEvent(userIdentifier: userIdentifier,
activationCode: reactivateRequest.activationCode,
pin: reactivateRequest.pin,
enableAutoLogin: reactivateRequest.enableAutoLogin)

let time = CallTimer(event: reactivateEvent)
MasterControllerAdapter.sharedInstance.sendEvent2MasterController(event: reactivateEvent) { event in
let duration = time.stop()
let actionResult: ActionResult
if let resultEvent = event as? KSMReactivationResultEvent {

let result = handleReactivateUserStatus(status: resultEvent.reactivationStatus)
actionResult = ActionResult(title: "reactivationModel.title".localized(table: localizedTable),
success: result.success,
error: result.errorText?.localized(table: localizedTable),
duration: duration,
event: event)
} else if let resultEvent = event as? KSMLoginResultEvent {
let result = handleReactivateUserStatus(status: resultEvent.loginStatus)
actionResult = ActionResult(title: "reactivationModel.title".localized(table: localizedTable),
success: result.success,
error: result.errorText?.localized(table: localizedTable),
duration: duration,
event: event)
} else {
actionResult = ActionResult(title: "reactivationModel.title".localized(table: localizedTable),
success: false,
error: "reactivationModel.status.unexpectedEvent".localized(table: localizedTable),
duration: duration,
event: nil)
}

EventLogObject(actionResult: actionResult,
component: localizedTable)
completion(actionResult)
}
}

Android/Kotlin

Triggering ReactivationEvent Event (Kotlin)
fun triggerReactivationEvent(
userIdentifier: UserIdentifier,
activationCode: String,
pin: String,
autoLogin: Boolean
) {
val reactivationEvent = ReactivationEvent(userIdentifier, activationCode, pin, autoLogin)
synchronousEventHandler.postEvent(reactivationEvent)?.then {
// handle result
}
}

All Platforms

As response to ReactivationEvent the Master Controller sends a ReactivationResultEvent with appropriate status.