Clone
1
Authentifizierung
MrDiderot edited this page 2026-04-14 12:59:53 +02:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Authentifizierung

Nutzertypen

Typ ID-Typ Beschreibung
Gast string (Session-ID) Temporär, kein Passwort, kein Profil
Nutzer number (DB-ID) Registriert, persistente Stats
Admin number + role: "admin" Vollzugriff auf Admin-Panel

Gast-Session

  • Alphanumerischer Name wählbar
  • Kann Echtzeit-Partien spielen
  • Keine Freunde, keine gespeicherten KI-Partien
  • req.session.user.id ist ein String

Registrierung & Login

  • Benutzername: alphanumerisch, eindeutig
  • E-Mail: optional, eindeutig wenn angegeben
  • Passwort: gehasht mit argon2
  • Session via express-session (gespeichert in PostgreSQL)

Admin-Rolle

  1. ADMIN_EMAIL in .env setzen
  2. Server setzt beim Start: UPDATE "user" SET role='admin' WHERE email=$1
  3. Nutzer muss sich neu einloggen (Session wird aktualisiert)

Admins sehen im Header einen „Admin"-Button mit Schild-Icon.

Session-Middleware

  • requireAuth prüft ob Nutzer eingeloggt (numerische ID)
  • requireAdmin prüft zusätzlich role === "admin"
  • Ban-Check: Gebannte Nutzer erhalten 403, Session wird zerstört
  • Socket.io: Session wird bei jedem Ereignis neu geladen

Passwort-Sicherheit

  • Hashing: argon2 (memory-hard, resistent gegen Brute-Force)
  • Klartext-Passwort wird niemals gespeichert oder zurückgegeben