Foreningsdomstolen er bygget med et lagdelt sikkerhetsmodell — fra innlogging til databasenivå. Her er en kort oversikt over de fire søylene.
Ingen tilgang uten gyldig innlogging. isAuthenticated settes kun når me() returnerer en ekte bruker med id og e-post. Anonyme brukere omdirigeres til innlogging — ingen gjeste- eller preview-bypass.
Alle 58 dataentiteter har RLS. Ingen entitet er lesbar for anonyme. Tilgang anker på created_by_id (alltid populert), obligatoriske e-postfelter, eller rolle-vilkår (user_condition).
Juridiske saksdata (Case, Document, JournalEntry, Hearing) har ekstra streng scoping. Actor-email-grener (dommer, advokat, part) er pakket i auth-sjekk slik at valgfrie/null-felt ikke lekker til anonyme.
Automatisert revisjonsskript (check_rls.cjs) verifiserer at alle entiteter har RLS og at ingen har åpen read — hver deploy. Auditen skal være ren: 0 uten RLS, 0 åpen read, 0 parsefeil.
1. Auth-port: me() kreves for isAuthenticated; ProtectedRoute blokkerer alle beskyttede ruter for anonyme.
2. RLS på alt: 58 entiteter klassifisert (offentlig katalog, kun admin/styre, eier-scopet, eier-via-e-post). Revisjonsskript verifiserer.
3. Rolle-restriksjon: Juridiske saksdata har actor-scoping med auth-pakket e-postmatch — null-felt lekker ikke.
4. Secure-by-default: node base44/scripts/check_rls.cjs — ren audit før publisering.