refactor(backend): Consent-Guard entfernt, Cookie-basiertes Consent-Handling #137

Closed
opened 2026-06-28 21:31:44 +00:00 by niboer · 0 comments
Owner

Beschreibung

Der requireConsent-Guard in backend/src/lib/auth.ts fuehrt bei JEDER API-Anfrage einen DB-Query auf die consents-Tabelle aus. Das ist ineffizient und wird durch einen Cookie-basierten Ansatz ersetzt.

Aufgaben

  • requireConsent-Funktion aus backend/src/lib/auth.ts entfernen
  • requireConsent aus allen preHandler-Chains entfernen (events, persons, groups, contacts, guests)
  • Nach prisma.consent.create() in guests.ts: HttpOnly-Cookie consent_granted=true setzen
  • docs/design/03-autorisierungsmatrix.md aktualisieren (requireConsent() aus allen Endpunkten entfernen)
  • Backend-Tests anpassen (entfallene 403-Consent-Tests)

Neuer Ablauf

  • Login → Backend setzt consent_granted-Cookie (HttpOnly, signed)
  • Jeder Request: Cookie wird im Frontend-Layout gelesen (kein DB-Query)
  • Consent erteilen → PUT .../consent → Backend schreibt DB + setzt Cookie
  • Seite neu laden → Cookie vorhanden → Layout rendert Inhalt
## Beschreibung Der `requireConsent`-Guard in `backend/src/lib/auth.ts` fuehrt bei JEDER API-Anfrage einen DB-Query auf die `consents`-Tabelle aus. Das ist ineffizient und wird durch einen Cookie-basierten Ansatz ersetzt. ## Aufgaben - [ ] `requireConsent`-Funktion aus `backend/src/lib/auth.ts` entfernen - [ ] `requireConsent` aus allen preHandler-Chains entfernen (events, persons, groups, contacts, guests) - [ ] Nach `prisma.consent.create()` in `guests.ts`: HttpOnly-Cookie `consent_granted=true` setzen - [ ] `docs/design/03-autorisierungsmatrix.md` aktualisieren (`requireConsent()` aus allen Endpunkten entfernen) - [ ] Backend-Tests anpassen (entfallene 403-Consent-Tests) ## Neuer Ablauf - Login → Backend setzt `consent_granted`-Cookie (HttpOnly, signed) - Jeder Request: Cookie wird im Frontend-Layout gelesen (kein DB-Query) - Consent erteilen → `PUT .../consent` → Backend schreibt DB + setzt Cookie - Seite neu laden → Cookie vorhanden → Layout rendert Inhalt
Sign in to join this conversation.
No description provided.