Skip to content

[Auth] Lokalen Login mit periodischer Vereinsflieger-Verifikation einführen #31

Description

@obrunsmann

Ziel

Der Login soll nicht bei jedem Anmeldeversuch zwingend die Vereinsflieger-API aufrufen. Stattdessen soll ein lokaler Login mit gespeichertem Passwort-Hash möglich sein, solange der Benutzer kürzlich erfolgreich gegen Vereinsflieger verifiziert wurde und weiterhin als aktiv gilt.

Anforderungen

  • Login gegen den lokal gespeicherten Passwort-Hash ermöglichen.
  • Ein lokaler Login ist nur zulässig, wenn der Benutzer als aktiv markiert ist.
  • Ein lokaler Login ist nur zulässig, wenn die letzte erfolgreiche Vereinsflieger-Verifikation nicht älter als ein definierter Zeitraum ist.
  • Ist der Benutzer nicht aktiv oder die letzte Verifikation zu alt, muss vor dem Login eine Verifikation gegen Vereinsflieger erfolgen.
  • Bei erfolgreicher Vereinsflieger-Verifikation müssen die lokalen Benutzerdaten aktualisiert werden.
  • Bei erfolgreicher Vereinsflieger-Verifikation muss der lokale Passwort-Hash auf das aktuell verwendete Passwort aktualisiert werden.
  • Bei fehlgeschlagener Vereinsflieger-Verifikation darf kein Login erfolgen.

Datenmodell

  • users um folgende Felder erweitern:
    • vf_active (boolean, Default true)
    • vf_last_verified_at (timestamp, nullable)
    • vf_last_seen_at (timestamp, nullable)
  • Bestehende Benutzer müssen sauber migriert werden.

Login-Flow

  1. Benutzer über den lokalen User-Store laden.
  2. Prüfen, ob der lokale Passwort-Hash passt.
  3. Prüfen, ob vf_active = true.
  4. Prüfen, ob vf_last_verified_at innerhalb der erlaubten Frist liegt.
  5. Wenn alles erfüllt ist: lokaler Login ohne Vereinsflieger-API.
  6. Wenn die Verifikation fehlt oder veraltet ist: Vereinsflieger-Login durchführen.
  7. Bei Erfolg:
  • lokale Stammdaten aktualisieren
  • Passwort-Hash aktualisieren
  • vf_last_verified_at setzen
  • vf_active = true setzen
  1. Bei Fehlschlag: Login ablehnen.

Synchronisation ausgeschiedener Mitglieder

  • Es muss einen regelmäßigen Sync der Vereinsflieger-Benutzer geben.
  • Benutzer, die im relevanten Vereinsflieger-Datenbestand nicht mehr vorhanden oder nicht mehr zulässig sind, müssen lokal deaktiviert werden.
  • Für deaktivierte Benutzer müssen bestehende Sessions ungültig gemacht werden.
  • Deaktivierte Benutzer dürfen sich nicht mehr lokal anmelden.
  • Benutzer sollen nicht gelöscht, sondern deaktiviert werden.

Konfigurierbarkeit

  • Der maximale Zeitraum für eine lokale Anmeldung ohne neue Vereinsflieger-Verifikation muss konfigurierbar sein.
  • Der Sync soll über einen bestehenden oder neuen Command sauber ausführbar sein.

Akzeptanzkriterien

  • Ein kürzlich verifizierter aktiver Benutzer kann sich lokal anmelden, ohne dass bei jedem Login Vereinsflieger aufgerufen wird.
  • Ein Benutzer mit veralteter oder fehlender Verifikation wird vor dem Login gegen Vereinsflieger geprüft.
  • Bei erfolgreicher Vereinsflieger-Verifikation werden Passwort-Hash und Metadaten lokal aktualisiert.
  • Deaktivierte Benutzer können sich nicht anmelden.
  • Ausgeschiedene Benutzer werden durch den Sync deaktiviert, nicht gelöscht.
  • Vorhandene Sessions deaktivierter Benutzer werden beendet.
  • Die Verifikationsfrist ist konfigurierbar.
  • Tests decken lokalen Login, Re-Verifikation, Deaktivierung und Session-Invalidierung ab.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestphpPull requests that update php code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions