ReadKeep/docs/401.md
Ilyas Hallak 6de413376f Clean up documentation and remove debug settings
- Move documentation files from root to docs/ folder
- Remove DEBUG-only settings from ReadingSettingsView (Safari Reader Mode, Auto-mark as read)
2025-11-21 22:07:41 +01:00

2.1 KiB
Raw Blame History

Feature: Persistentes Logout bei 401 Unauthorized

Problemstellung

Wenn eine API-Anfrage mit einem 401 Unauthorized-Response fehlschlägt, bedeutet dies, dass der aktuell gespeicherte Token oder die Session des Nutzers ungültig ist (z. B. durch manuelles Löschen des Tokens im Backend oder andere Ursachen).
In diesem Zustand darf der User nicht weiter mit einer scheinbar gültigen Session in der App interagieren.

Ziel

Die App soll den Nutzer in einem solchen Fall automatisch vollständig ausloggen und auf den Setup-/Login-Screen umleiten.
Dies muss persistiert sein, d.h. auch nach App-Neustart darf der Nutzer nicht eingeloggt zurückkehren, solange keine erfolgreiche neue Anmeldung durchgeführt wurde.


Anforderungen

  1. Erkennen von ungültigem Token

    • Jede API-Antwort mit 401 Unauthorized löst den Logout-Prozess aus.
    • Optional: Kontext beachten (z. B. ob der Request ein Refresh-Token war).
  2. Logout-Mechanismus

    • Alle gespeicherten Zugangsdaten (Access Token, Refresh Token, User-Daten im Keychain/Storage) werden gelöscht.
    • UI-State wird in den "nicht eingeloggten" Zustand zurückversetzt.
    • Persistenter "loggedOut"-State wird gesetzt (z. B. in UserDefaults oder einer App-State-DB).
  3. Persistenz

    • Falls der Nutzer die App neu startet, startet er im Setup-/Login-Screen und nicht in einem alten Session-Kontext.
  4. Wiederanmeldung

    • Sobald der Nutzer sich neu einloggt und erfolgreich ein Access Token erhält:
      • wird der persistente "loggedOut"-State zurückgesetzt
      • die App verhält sich wieder wie gewohnt im eingeloggten Zustand.

Beispiel-Use Case

  • User ist eingeloggt in die App.
  • Im Backend wird manuell der Token gelöscht oder die Session invalidiert.
  • Nächster API-Call → API gibt 401 Unauthorized zurück.
  • App erkennt ungültigen Zustand, löscht alle Tokens und Session-Daten und leitet den User sofort auf den Setup-/Login-Screen um.
  • Auch nach einem App-Neustart startet der User weiterhin im Setup-Screen.
  • Sobald der User sich erfolgreich einloggt, gelten alle API-Calls wieder normal.