Dashboard-API: Center-Scoping (Listen)
Liste-Endpoints nutzen dieselbe Schicht:
- Explizites Center:
?centerId=<uuid>→ bei eingeloggtem UserassertCenterAccess; ohne Login nur Einschränkung auf dieses Center (z. B. Kiosk/Proxy mit?centerId=). - Kein
centerIdin der URL: Session erforderlich;buildCenterFilter(session)→params.centerIds. pickCenterWhereFragment/createStandardWhereClauseinlib/api/utils.tsmappen auf Prisma:centerIdbzw.centerId: { in: [...] }. LeerescenterIds→ keine Treffer.
Server-Helfer: mergeSessionCenterScopeIntoListParams in apps/dashboard/src/lib/api/list-route-center-scope.ts — vor findMany aufrufen (u. a. GET /api/events, /api/jobs, /api/services, Hot-Picks, /api/content/metrics, /api/content/recent). Manuelle Prisma-Routes verwenden pickCenterWhereFragment für das Center-Fragment der where-Klausel.
Hinweise
- Platzhalter
allgehört nicht in die Query.centerIdQueryParaminapps/dashboard/src/lib/center-query.ts;extractQueryParamsverwirft?centerId=all. GET /api/offersbaut den Session-Filter weiterhin direkt in Prisma ein (gleiche Semantik).- News/Shops:
createStandardWhereClause(nutztpickCenterWhereFragment).
So bleiben Dashboard-Listen bei gewechseltem Center oder „Alle Center“ (Super-Admin) konsistent.
Verwandt: Audit: Namespace /api/content/* — welche Routen dort noch CORS/ohne Session sind und wer sie aufruft.
Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /en/developer-guide/dashboard-api-center-scoping