feat(backend+frontend): Consent-API von Events entkoppeln #250

Merged
niboer merged 1 commit from issue-249 into main 2026-07-06 14:03:43 +00:00
Owner

Allgemein

closes #249

Altes Verhalten

Consent-Endpoint PUT /api/v1/events/{event_id}/guests/{person_id}/consent war an ein Event gekoppelt und erforderte einen existierenden eventGuest-Eintrag. Ein User ohne Einladung zu einem Event konnte keinen Consent abgeben. Der ConsentDialog lud via +layout.server.ts zwingend die Invitations, um eine eventId zu ermitteln.

Neues Verhalten

Neuer Endpoint PUT /api/v1/persons/{person_id}/consent unabhaengig von Events:

  • Auth via requireOwnDataOrGroupMember (eigene Person oder Haushaltsmitglied)
  • Keine eventGuest-Pruefung — nur Person-Existenz (404)
  • Alter Endpoint in guests.ts entfernt
  • ConsentDialog nutzt direkt den persons-Endpunkt, keine eventId/invitations mehr noetig
  • +layout.server.ts laedt nur noch groupMembers fuer Haushalts-Consent

Begruendung

Laut Design-Dokument (02-datenmodell.md) ist Consent ein personenbezogenes Feature. Die Kopplung an Events war ein Implementierungsdetail ohne Design-Begruendung und verhinderte Consent fuer User ohne Einladung.

Test-Hinweise

  • Backend: npm test (14 Consent-Tests, alle passed)
  • Frontend: npm test (917 Tests, alle passed)
  • Integrationstest erfolgreich durchgelaufen
  • E2E-Tests via ConsentDialog-UI arbeiten weiterhin (keine API-Pfad-Nutzung in Specs)

Checkliste

  • use:testid an neuen <button>, <a>, <form>-Elementen gesetzt? (keine neuen Elemente)
  • Korrespondierender E2E-Test in e2e/specs/ angelegt? (E2E-Tests unveraendert, UI-Flow identisch)
### Allgemein closes #249 ### Altes Verhalten Consent-Endpoint `PUT /api/v1/events/{event_id}/guests/{person_id}/consent` war an ein Event gekoppelt und erforderte einen existierenden `eventGuest`-Eintrag. Ein User ohne Einladung zu einem Event konnte keinen Consent abgeben. Der ConsentDialog lud via `+layout.server.ts` zwingend die Invitations, um eine eventId zu ermitteln. ### Neues Verhalten Neuer Endpoint `PUT /api/v1/persons/{person_id}/consent` unabhaengig von Events: - Auth via `requireOwnDataOrGroupMember` (eigene Person oder Haushaltsmitglied) - Keine eventGuest-Pruefung — nur Person-Existenz (404) - Alter Endpoint in `guests.ts` entfernt - ConsentDialog nutzt direkt den persons-Endpunkt, keine eventId/invitations mehr noetig - `+layout.server.ts` laedt nur noch groupMembers fuer Haushalts-Consent ### Begruendung Laut Design-Dokument (`02-datenmodell.md`) ist Consent ein personenbezogenes Feature. Die Kopplung an Events war ein Implementierungsdetail ohne Design-Begruendung und verhinderte Consent fuer User ohne Einladung. ### Test-Hinweise - Backend: `npm test` (14 Consent-Tests, alle passed) - Frontend: `npm test` (917 Tests, alle passed) - Integrationstest erfolgreich durchgelaufen - E2E-Tests via ConsentDialog-UI arbeiten weiterhin (keine API-Pfad-Nutzung in Specs) ### Checkliste - [x] `use:testid` an neuen `<button>`, `<a>`, `<form>`-Elementen gesetzt? (keine neuen Elemente) - [x] Korrespondierender E2E-Test in `e2e/specs/` angelegt? (E2E-Tests unveraendert, UI-Flow identisch)
feat(backend+frontend): Consent-API von Events entkoppeln
All checks were successful
CI Backend / lint-backend (pull_request) Successful in 51s
CI Frontend / lint-frontend (pull_request) Successful in 1m11s
CI Meta / conventional-commit (pull_request) Successful in 1s
CI Backend / test-backend (pull_request) Successful in 1m44s
CI Frontend / test-frontend (pull_request) Successful in 43s
E2E / e2e (pull_request) Successful in 2m42s
c3e94521c2
Neuer Endpoint PUT /api/v1/persons/{person_id}/consent mit
requireOwnDataOrGroupMember-Auth, ohne eventGuest-Pruefung.

Alter Endpoint PUT /api/v1/events/{event_id}/guests/{person_id}/consent
aus guests.ts entfernt.

Frontend ConsentDialog: eventId- und invitations-Props entfernt,
API-URL auf neuen persons-Endpoint umgestellt. +layout.server.ts
laedt keine Invitations mehr fuer Consent-Dialog.

OpenAPI-Spec, Design-Dokumente (02-datenmodell, 03-api-design,
03-autorisierungsmatrix, 04-frontend-architektur) und AGENTS.md
aktualisiert.

Unit-Tests (consent.test.ts) und Frontend-Tests
(consent-dialog.test.ts) aktualisiert.

closes #249
niboer merged commit 371be2c218 into main 2026-07-06 14:03:43 +00:00
niboer deleted branch issue-249 2026-07-06 14:03:43 +00:00
Sign in to join this conversation.
No description provided.