Add User
Once a user has logged in to the application, then they can add a new user as a family login. Family login is a functionality that allows multiple users to log in to a single application. The Add User flow involves a set of events described in the add user events list. To start the flow, the user needs to trigger AddUserEvent.
AddUser event flow-diagram
This diagram shows the add user flow.
iOS/Swift
Below is the code snippet for Swift to trigger the add user process:
static func performAddUser(addUserRequest: AddUserRequest) async -> ActionResult {
return await withCheckedContinuation { continuation in
let userIdentifier = KsUserIdentifier(tenantId: addUserRequest.tenantId, userId: addUserRequest.userId)
let addUserEvent = KSMAddUserEvent(userIdentifier: userIdentifier,
activationCode: addUserRequest.activationCode,
pin: addUserRequest.pin,
enableAutoLogin: addUserRequest.enableAutoLogin)
let time = CallTimer(event: addUserEvent)
MasterControllerAdapter.sharedInstance.sendEvent2MasterController(event: addUserEvent) { event in
let duration = time.stop()
let actionResult: ActionResult
if let resultEvent = event as? KSMAddUserResultEvent {
let result = handleAddUserStatus(status: resultEvent.status)
actionResult = ActionResult(title: "addUserModel.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 = handleAddUserStatus(status: resultEvent.loginStatus)
actionResult = ActionResult(title: "addUserModel.title".localized(table: localizedTable),
success: result.success,
error: result.errorText?.localized(table: localizedTable),
duration: duration,
event: event)
} else {
actionResult = ActionResult(title: "addUserModel.title".localized(table: localizedTable),
success: false,
error: "addUserModel.event.unexpected".localized(table: localizedTable),
duration: duration,
event: event)
}
EventLogObject(actionResult: actionResult,
component: localizedTable)
continuation.resume(returning: actionResult)
}
}
}
Android/Kotlin
In Kotlin, you can use the code snippet below to trigger AddUserEvent:
fun triggerAddUserEvent(
userIdentifier: UserIdentifier,
activationCode: String,
pin: String,
autoLogin: Boolean
) {
val addUserEvent = AddUserEvent(userIdentifier, activationCode, pin, autoLogin)
synchronousEventHandler.postEvent(addUserEvent)?.then {
// handle result
}
}
All platforms
As response of this event, Master Controller provides AddUserResultEvent, or a LoginResultEvent if you used autoLogin=true when triggering AddUserEvent. Overall the flow is similar to the activation flow. You can find the possible status codes of AddUserResultEvent here.