Перейти к основному содержанию

Управление сеансом

SecureSessionManager​

SecureSessionManager.kt управляет сохранением сеанса пользователя между запусками приложения с помощью SharedPreferences.

object SecureSessionManager {
fun setContext(context: Context)
fun iniciarSesion(id: Int, nombre: String, isAdmin: Boolean, isPremium: Boolean): Boolean
fun obtenerSesion(): SesionData?
fun cerrarSesion()
}

Инициализация​

setContext(context) необходимо вызывать перед любой другой операцией. Вызывается в MainActivity.onCreate() с контекстом активности. Внутри он создает SharedPreferences с именем AppConfig.SESSION_PREFS_NAME ("trainium_session") и режимом MODE_PRIVATE.

начало сеанса​

Сохраните данные сеанса в SharedPreferences:

fun iniciarSesion(id: Int, nombre: String, isAdmin: Boolean, isPremium: Boolean): Boolean

userId, userName, isAdmin и isPremium сохраняются. Возвращает true, если сохранение завершилось успешно (проверьте, перечитав userId).

Вызывается с LoginScreen сразу после успешной аутентификации.

getSession​

Восстановить сохраненные данные сеанса:

fun obtenerSesion(): SesionData?

Возвращает объект SesionData с данными пользователя или null, если нет сохраненного сеанса (первая загрузка или после выхода из системы). Он вызывается с экрана loading при запуске приложения.

закрыть сеанс​

Очистите все данные из SharedPreferences:

fun cerrarSesion()

Вызывается из ProfileScreen, когда пользователь нажимает «Выйти», непосредственно перед переходом к main с помощью popUpTo(0).

Модель данных сеанса​

data class SesionData(
val userId: Int,
val userName: String,
val isAdmin: Boolean,
val isPremium: Boolean,
val token: String = ""
)

Продолжительность сеанса​

AppConfig.SESSION_DURATION_MS определяет теоретическую продолжительность сеанса (7 дней в миллисекундах). Однако в текущей реализации сеанс не истекает автоматически; Оно сохраняется до тех пор, пока пользователь явно не выйдет из системы или данные приложения не будут очищены.