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: en automatisk RLS-revisjon kjøres før hver publisering, og må være ren.
Enkelte tekstfelt har en mikrofonknapp. Den bruker nettleserens egen talegjenkjenning, og i Chrome og Edge sendes lyden til nettleserleverandøren for å gjøres om til tekst. Lyden blir dermed ikke i maskinen, og den passerer en tredjepart vi ikke har databehandleravtale med.
Slått på: avviksbeskrivelser og kvalitetsregister, merknad ved lukking av avvik, interne oppgavenotater, beskrivelse i timeføring og notater på kalenderoppføringer og berammelser. Dette er domstolens egne interne notater.
Slått av: saksinnmelding, prosesskriv, dokumenter, brev, meldinger, SMS, journal og alle registre. Alt som bærer partenes egne opplysninger skrives inn — det dikteres ikke gjennom en tredjepart.
Fraværet av knappen i et felt er en beslutning, ikke en mangel. Forklaringen ligger også i selve feltene der knappen finnes.