AuthEvents
Интерфейс, представляющий события авторизации. Позволяет отслеживать ключевые моменты процесса аутентификации: отказы, результаты, ошибки, переинициализации. Реализует общий интерфейс SIDEvents.
| Класс | Описание | Условия возникновения |
|---|---|---|
| WebAuthReject | Отмена авторизации на любом этапе | Пользователь явно отказался от процесса аутентификации (нажал "Назад", "Отмена" или закрыл окно) в WebView, CustomTab или диалоговом окне |
| ReLoginStatusReject | Отказ в сценарии релогина ЕЛК | Пользователь прервал процесс повторного входа (закрыл окно релогина или отменил операцию) |
| ReLoginIsLite | Запуск события повторного логина | Начало процесса переаутентификации пользователя без полного выхода из системы (инициируется системой ЕЛК) |
| ReLoginStatus | Результат прохождения сценария релогина | Завершение процесса релогина с получением результата (успешного или ошибочного) и callback для продолжения сценария |
| WebViewError | Ошибка в WebView | Возникает при проблемах с загрузкой или открытием веб-контента (поврежденная ссылка, отсутствующий URI, сетевые ошибки) |
Реализации
WebAuthReject
Отмена авторизации на любом этапе (WebView/CustomTab/Dialog). Пользователь явно отказался от процесса аутентификации.
Пример использования:
when (event) {
AuthEvents.WebAuthReject -> {
// Пользователь нажал "Назад" или "Отмена"
}
}
ReLoginStatusReject
Отказ в сценарии релогина ЕЛК (например, пользователь закрыл окно). Указывает на прерывание процесса повторного входа.
Пример использования:
when (event) {
AuthEvents.ReLoginStatusReject -> {
// Пользователь прервал процесс релогина
}
}
ReLoginIsLite
Запуск события повторного логина. Инициирует процесс переаутентификации пользователя без полного выхода из системы.
Пример использования:
when (event) {
AuthEvents.ReLoginIsLite -> {
// Начало процесса релогина
}
}
ReLoginStatus
Событие прохождения сценария релогина. Содержит результат авторизации и callback для продолжения пользовательского сценария.
Поля:
| Поле | Тип | Описание |
|---|---|---|
| result | SIDResultModel | Результат логина через WebView |
| continueAppToWeb | (String?) -> Unit | Лямбда для возможности продолжить пользовательский сценарий |
Пример использования:
is AuthEvents.ReLoginStatus -> {
val (result: SIDResultModel, continueAppToWeb: (userID: String?) -> Unit) = authEvents
if (result.isSuccess == true) {
//Тут будет поход в сеть для регистрации нового токена и в зависимости от результата мы
//можем отправить в лямбду null значение, то есть грубо говоря пример ниже -
val isSuccess = vm.sendToken(result.authCode)
if (isSuccess) {
continueAppToWeb.invoke("userID")
} else {
continueAppToWeb.invoke(null (или ""))
}
} else {
continueAppToWeb.invoke(null (или ""))
//Тут можно сделать любые действия для лучшего взаимодействия с пользователем.
}
}
WebViewError
Ошибка в WebView (например, поврежденная ссылка или отсутствующий URI). Возникает при проблемах с загрузкой или открытием веб-контента.
Конструктор:
| Параметр | Тип | Описание |
|---|---|---|
| errorLink | String? | Ошибка в URL (если доступна) |
| uriIsNull | Boolean | Флаг: URI пустой |
Методы:
| Метод | Возвращаемый тип | Описание |
|---|---|---|
| toString() | String | Строковое представление объекта |
Пример использования:
is AuthEvents.WebViewError -> {
if (event.uriIsNull) {
// Критическая ошибка - отсутствует URI для авторизации
analytics.logEvent("auth_uri_missing")
showErrorDialog("Не удалось начать авторизацию")
logToCrashlytics("WebViewError: URI is null")
} else {
// Ошибка загрузки страницы
analytics.logEvent("webview_load_error", mapOf(
"error_link" to event.errorLink
))
showRetryDialog {
retryAuthWithAlternativeMethod()
}
}
}