Zum Hauptinhalt springen

Sitzungsverwaltung

SecureSessionManager​

SecureSessionManager.kt verwaltet die Persistenz der Benutzersitzung zwischen Anwendungsstarts mithilfe von SharedPreferences.

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

Initialisierung​

setContext(context) muss vor jeder anderen Operation aufgerufen werden. Wird in MainActivity.onCreate() mit dem Aktivitätskontext aufgerufen. Intern wird ein SharedPreferences mit dem Namen AppConfig.SESSION_PREFS_NAME ("trainium_session") und dem Modus MODE_PRIVATE erstellt.

startSession​

Speichern Sie die Sitzungsdaten unter SharedPreferences:

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

userId, userName, isAdmin und isPremium bleiben bestehen. Gibt true zurück, wenn die Speicherung erfolgreich abgeschlossen wurde (überprüfen Sie dies durch erneutes Lesen von userId).

Von LoginScreen sofort nach erfolgreicher Authentifizierung angerufen.

getSession​

Gespeicherte Sitzungsdaten wiederherstellen:

fun obtenerSesion(): SesionData?

Gibt ein SesionData-Objekt mit den Benutzerdaten zurück, oder null, wenn keine gespeicherte Sitzung vorhanden ist (erster Start oder nach einer Abmeldung). Der Aufruf erfolgt über den Bildschirm „loading“, wenn die App gestartet wird.

closeSession​

Alle Daten von SharedPreferences löschen:

fun cerrarSesion()

Wird von ProfileScreen aufgerufen, wenn der Benutzer auf „Abmelden“ klickt, kurz bevor er mit popUpTo(0) zu main navigiert.

SessionData-Modell​

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

Sitzungsdauer​

AppConfig.SESSION_DURATION_MS definiert die theoretische Dauer der Sitzung (7 Tage in Millisekunden). In der aktuellen Implementierung läuft die Sitzung jedoch nicht automatisch ab. Sie bleibt bestehen, bis sich der Benutzer explizit abmeldet oder die Daten der App gelöscht werden.