Retningslinjen sier hvem som har tilgang til hva: brukerne i et meglerforetak, Verids egne folk i appen, og Verids folk i driftsverktøyene (Vercel, Neon, GitHub, Resend). Den sier også hvordan tilgang gis og fjernes. Det som er håndhevet i koden, peker på en fil. Det som er manuelt, står som manuelt.
Sist oppdatert: 28.09.2026.
1. Brukerne i meglerforetaket
Tilgangen følger medlemskap i et foretak (member.role). Rollene er definert i packages/auth/src/tilgang.ts.
| Rolle | Kan | Kan ikke |
|---|---|---|
| Megler | Opprette, lese og oppdatere saker. Kjøre søk. Lage rapport. Godkjenne egne saker uten avvik eller mistanke | Slette saker. Godkjenne saker med avvik eller mistanke, eller andres saker. Se forbruk |
| Hvitvaskingsansvarlig | Alt en megler kan, pluss godkjenne alle rapporter, se forbruk og styre medlemmer | Slette foretaket |
| Eier | Alt en hvitvaskingsansvarlig kan, pluss slette foretaket | — |
- Rettighetene sjekkes på serveren med
auth.api.hasPermissionfør hver handling som endrer noe. - Retten til å slette saker finnes i rollene, men ingen handling i appen sletter en sak. Saker slettes bare av slettejobben.
- Et foretak kan ikke slettes. Sletting er slått av i Better Auth (
disableOrganizationDeletionipackages/auth/src/auth.ts), fordi sakene ellers ville blitt slettet med foretaket før fem år er gått. - Etter 10 feil passord på 15 minutter er adressen stengt resten av vinduet.
- Den som oppretter foretaket, blir eier (
OPPRETTERROLLE). - Det går bare an å invitere til megler eller hvitvaskingsansvarlig (
INVITERBARE). Eierskap deles ikke ut i en invitasjon. - En invitasjon kan bare godtas med bekreftet e-postadresse (
requireEmailVerificationOnInvitationipackages/auth/src/auth.ts). - Hver endring av medlemmer og roller logges i
hendelse(apps/web/app/(innstillinger)/innstillinger/medlemmer/handlinger.ts).
Hvem styrer det: Foretaket selv. Hvitvaskingsansvarlig eller eier inviterer, endrer rolle og fjerner medlemmer. Verid gjør det ikke for dem.
2. Verids folk i appen
To plattformroller står i user.role (packages/auth/src/plattform.ts):
| Rolle | Kan |
|---|---|
| Admin | Se alle foretak og brukere på /drift. Ta innsyn. Logge ut en brukers økter. Sende lenke for nytt passord |
| Superadmin | Alt en admin kan, og gi eller fjerne plattformroller |
- En plattformrolle gir ingen tilgang til saker gjennom medlemskap.
- Plattformtilgang krever bekreftet e-postadresse (
harPlattformtilgang). - Vaktene leser rollen fra databasen, ikke fra sesjonen (
apps/web/lib/drift.ts,krevDriftogkrevSuperadmin). - Den siste superadminen kan ikke fjernes (
settPlattformrolleiapps/web/lib/innsyn.ts). - Administrasjonsendepunktene i Better Auth er stengt over HTTP (
hooks.beforeipackages/auth/src/auth.ts).
Innsyn er den eneste veien for Verid inn i et foretaks saker:
- Krever en skriftlig grunn på minst fem tegn.
- Varer høyst 30 minutter (
INNSYN_MINUTTER). Tiden kan ikke forlenges. - Skrives i
driftlogg*før* innsynet starter. Feiler loggen, skjer ikke innsynet. - Innsyn i en annen plattformbruker er stengt.
- Under innsyn er disse handlingene stengt: godkjenne en rapport, sende en sak til kontroll, kontroll av person, kontrasignering og å sende en melding om mistenkelig forhold til Økokrim (
apps/web/app/(app)/saker/[id]/kontroll-handlinger.ts,apps/web/app/(app)/saker/[id]/okokrim/handlinger.ts). - Brukeren ser innsynene på sin egen konto på
/innstillinger/sikkerhet.
Nødutgang: pnpm --filter @workspace/db plattformrolle <epost> <rolle> setter en rolle direkte i databasen, og logger det i driftlogg med «skript» som aktør (packages/db/scripts/plattformrolle.ts). Den krever databasenøkkelen, se punkt 3.
3. Verids folk i driftsverktøyene
Denne tilgangen er utenfor appen og styres i hver leverandørs konsoll. Den er ikke håndhevet eller logget i repoet.
| Verktøy | Hva tilgangen gir | Hvem i dag (ikke kontrollert mot konsollen) |
|---|---|---|
| Vercel | Utrulling, miljøvariabler (alle hemmeligheter), driftslogger, Blob-arkivet | Grunnleggeren |
| Neon | Hele databasen, inkludert all saksdata | Grunnleggeren |
| GitHub | Kildekoden. En push til main rulles ut i produksjon | Grunnleggeren |
| Resend | Utsendt e-post og domeneoppsett | Grunnleggeren |
| Samarbeidsportalen (Digdir) | Maskinporten-klienten og den offentlige nøkkelen | Grunnleggeren |
- Hemmelighetene ligger som miljøvariabler hos Vercel. Listen står i
.env.example, uten verdier..env*er utelatt fra git (.gitignore). - Skriptene i
packages/db/scripts/leser nøklene fra.env.localpå utviklerens maskin. Den som har den filen, har databasetilgang. - Tilgang gis bare til personer som trenger den for jobben, og på den laveste rollen leverandøren tilbyr som dekker jobben.
4. Når noen slutter
En megler slutter i et foretak (foretaket gjør dette):
- Hvitvaskingsansvarlig eller eier fjerner medlemmet på
/innstillinger/medlemmer. Sakene blir igjen hos foretaket. - Det aktive foretaket nullstilles i alle personens sesjoner for det foretaket (
fjernMedlemiapps/web/app/(innstillinger)/innstillinger/medlemmer/handlinger.ts). Hurtigbufferet kan holde tilgangen åpen i inntil 5 minutter (punkt 5).
En person hos Verid slutter (Verid gjør dette, manuelt):
- Fjern plattformrollen på
/drift/tilgang. - Logg ut personens økter fra
/drift/brukere/<id>. - Fjern personen fra Vercel, Neon, GitHub, Resend og Samarbeidsportalen.
- Bytt hemmelighetene personen kan ha sett (se kryptering-og-nokler).
- Skriv ned hva som ble gjort og når.
5. Tilbakekalling av økter
- En bruker kan logge ut egne økter på
/innstillinger/sikkerhet. Bytte av passord logger ut alle andre økter (apps/web/app/(innstillinger)/innstillinger/_deler/konto.ts). - Drift kan logge ut alle økter for en bruker (
loggUtOkteriapps/web/lib/innsyn.ts). Handlingen står idriftlogg. - En tilbakekalt økt kan virke i inntil 5 minutter, på grunn av hurtigbufferet i informasjonskapselen (
cookieCacheipackages/auth/src/auth.ts).
6. Gjennomgang
Plattformrollene står på /drift/tilgang. Listen skal gås gjennom når noen begynner eller slutter hos Verid.
Gjenstår
| Mangel | Risiko | Plan |
|---|---|---|
| Tilgangen til Vercel, Neon, GitHub, Resend og Samarbeidsportalen er ikke listet eller gjennomgått skriftlig | Ingen kan vise hvem som har tilgang i dag | Før en liste med navn, rolle og dato, og gå den gjennom hvert kvartal |
| Det er ikke dokumentert om totrinnsinnlogging er på hos leverandørene. I appen finnes den ikke | Et lekket passord gir full tilgang | Krev totrinn på alle leverandørkontoer. Legg til twoFactor i appen |
Produksjonsnøkler ligger i .env.local på utviklerens maskin | En stjålet maskin gir databasetilgang | Egen databasebruker med lesetilgang for skript, eller hent nøklene ved behov |
| Ingen fast rutine for gjennomgang av plattformroller | Glemte roller blir liggende | Gjennomgang hvert kvartal, med dato i dette dokumentet |