From 58f946490c4b55d446b46f159eb6f3ab4f4ae6ef Mon Sep 17 00:00:00 2001 From: DanielS Date: Thu, 9 Jul 2026 23:15:20 +0200 Subject: [PATCH] docs: document is_admin recursion bypass in grand functions --- .agents/skills/grand-functions/references/security.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.agents/skills/grand-functions/references/security.md b/.agents/skills/grand-functions/references/security.md index 0407ab5..f2feeaf 100644 --- a/.agents/skills/grand-functions/references/security.md +++ b/.agents/skills/grand-functions/references/security.md @@ -16,4 +16,5 @@ RLS ist auf Datenbankebene in Postgres implementiert und erzwingt Datenisolierun - **Systembenutzer (`users`) & Rollen-Schutz**: - Authentifizierte Nutzer dürfen nur ihr eigenes Profil lesen. + - Admins dürfen alle Benutzer lesen. Zur Vermeidung von unendlichen RLS-Rekursionen auf der Tabelle `users` wird die Admin-Zuweisung über die Security-Definer-Funktion `public.is_admin(user_id)` geprüft, welche RLS auf Datenbank-Ebene umgeht. - Rollenschutz-Trigger (`check_user_role_escalation`): Jegliche Änderung der Spalte `role` oder Zuweisung der Rolle `'admin'` ist auf API-Ebene für normale Nutzer gesperrt. Updates/Inserts der Rolle werden ausschließlich von der `service_role` (Backend Admin-Client) akzeptiert, um Privilegien-Eskalation zu verhindern.