feat(backend): GET /api/v1/persons/me Endpunkt und person_id-Quelle #80
Labels
No labels
component/backend
component/docs
component/e2e
component/frontend
component/infra
component/keycloak
prio/high
prio/low
prio/medium
type/bug
type/chore
type/feature
type/refactor
type/test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
WompSchmiede/FamilienFeierPlaner#80
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Beschreibung
Neuer selbst-bewusster Endpunkt GET /api/v1/persons/me der das aktuell authentifizierte User-Profil inklusive Email zurueckgibt. Der Callback nutzt diesen Endpunkt um person_id, user_name und user_email Cookies zu setzen -- statt diese aus dem JWT zu extrahieren. Damit wird die korrekte DB-UUID (personId) fuer nachfolgende API-URLs verwendet.
Hintergrund
Die hooks.server.ts setzt aktuell personId = preferred_username aus dem JWT (z. B. "max.mustermann"). API-URLs wie /api/v1/persons/max.mustermann/invitations landen dann im Backend, wo die DB-UUID erwartet wird -> Prisma-Fehler "invalid input syntax for type uuid".
Backend: Neuer Endpunkt
GET /api/v1/persons/me Authorization: Bearer
equireAuth (legt
equest.user.personId korrekt anhand keycloakId-Mapping fest)
{
"personId": "81e29f0f-08e0-4932-89a6-3aae678ca805",
"firstName": "Max",
"lastName": "Mustermann",
"email": "max@test.de"
}
Frontend: Callback (+server.ts)
Nach dem Token-Erhalt wird BACKEND_ORIGIN/api/v1/persons/me mit dem frischen access_token als Authorization: Bearer aufgerufen und folgende Cookies gesetzt:
Frontend: hooks.server.ts
personId wird aus dem person_id-Cookie gelesen statt aus dem JWT. Fallback: payload.sub (Keycloak-UUID, falls Cookie fehlt z. B. bei bestehenden Sessions).
Betroffene Dateien
Akzeptanzkriterien
Auth auf oauth2 geändert in
e3c87ab632