Tidsregistrering for revisionsfirma
Tidsregistrering for projekter og medarbejdere i et revisionsfirma · Bygget fra bunden, alene
Opdateret
Før
Kunder, projekter og timer lå ét sted, hvor alle i firmaet kunne se og ændre alt.
Efter
87
tilladelsesfelter bevist mod databasen før hver udrulning; de 30, der intet gjorde, blev skjult.
- 1Menneske:Ejer
Opretter roller med afkrydsningsfelter pr. område (kunder, projekter, tid, rapporter) for visning, oprettelse, redigering og sletning.
- 2Menneske:Medarbejder
Registrerer timer på en kunde, et projekt og en opgave eller booker fri.
System:WebappMinder enhver, hvis tidsregistrering stadig er tom, inden fristen.
- 3Menneske:Projektadministrator
Godkender eller afviser ugens tidsregistrering for sit eget projektteam.
- 4System:Database
Viser hver person kun det, rollen tillader: medarbejdere ser deres egne timer, projektadministratorer deres team, ejere alle kunder.
- 5Menneske:Ejer
Læser timer pr. kunde, projekt og person i dashboards og rapporter.
Gælder altid
- Før kunne alle i firmaet åbne alle kunder og alles timer. Nu afviser databasen alt, hvad en rolle ikke må, selv hvis brugerfladen beder om det.
- Før hvert push testes hver rolle mod en isoleret kopi af databasen.
Problem
Et revisionsfirma styrede kunder, projekter og medarbejdertimer i et værktøj, hvor enhver kunne åbne alle kunder og alles tid.
Diagnose
Adgangskontrol svigter ubemærket, når den ligger i brugerfladen, så hver regel skulle ligge i databasen og bevises med tests.
Overvejede muligheder
Hver rolle ser forskellige data. Hvor ligger adgangsreglerne?
Valgt
I selve databasen, testet for hver rolle før hver udrulning
Brugerfladen kan ikke lække det, databasen nægter. Pris: en testkørsel på en isoleret kopi før hvert push.
Fravalgt
Kun i brugerfladen
En person kunne se eller ændre data, som brugerfladen skulle skjule.
En post er ikke længere nødvendig. Skal den slettes eller beholdes?
Valgt
Arkivér og anonymisér den
Tidsregistreringens historik forbliver intakt.
Fravalgt
Slet den
Sletning trækker tidsregistreringens historik med sig.
Løsning
En single-page webapp på administreret Postgres. Hver adgangsregel ligger i databasen og bevises af en automatisk rollematrix før hver udrulning.
- App
- React
- Vite
- TanStack Router
- TanStack Query
- shadcn/ui
- Chart.js
- Data og sikkerhed
- Supabase
- PostgreSQL row-level security
- Edge Functions (Deno)
- Hosting
- Cloudflare
- Kvalitet
- GitHub Actions
- Role-matrix tests
- Vitest
- Property-based tests
- Accessibility tests
Relaterede ydelser
Nøgletal: Automatisk rolletjek, 2026-09-25