Designet et system for å bytte organisasjonskontekst med localStorage på klienten og speiling i informasjonskapsler på serversiden, slik at brukere kan opptre som organisasjoner de administrerer, med autorisasjon etter prinsippet om minste privilegium.
Arbeidet utført: 2025
opptre trygt som enhver organisasjon du administrerer
Situasjon. På plattformen kan en maritim fagperson administrere organisasjoner — selskaper, akademier — som ikke har egne pålogginger. Personen er kontoen; organisasjonen er noe vedkommende handler på vegne av. Derfor må en bruker kunne bevege seg gjennom hele appen som hvilken som helst organisasjon vedkommende administrerer og bytte fritt mellom dem, og den bekvemmeligheten får ikke bli et hull i autorisasjonen.
Oppgave. Kontekstbyttet måtte være raskt og diskré for brukeren, samtidig som den aktive konteksten aldri på egen hånd skulle kunne gi noen tilgang vedkommende ikke hadde rett til.
Handling. En OrganizationContext håndterer dette, med lagring på begge sider. På klienten er localStorage sannhetskilden for hvilken organisasjon man for øyeblikket handler som, så byttet skjer umiddelbart — uten rundtur til serveren. En cookie på serversiden speiler den, slik at serverrenderte sider får samme kontekst under SSR; på serveren er det en getServerViewMode som leser den. Det viktige er at ingenting av dette stoles på når tilgang skal avgjøres. Autorisasjonen kontrolleres på nytt på serveren ved hver forespørsel. Frontend‑konteksten finnes for opplevelsens skyld — for å vise brukeren det riktige — og serveren er den eneste autoriteten på hva man har lov til å gjøre.
Resultat. En bruker kan handle som hvilken som helst organisasjon vedkommende administrerer, uten friksjon, og grensesnittet holder seg synkronisert på både klient og server. Men fordi tilgangene verifiseres på serversiden hver gang, svekker ingenting av denne bekvemmeligheten sikkerheten. Den som tukler med innholdet i localStorage, endrer hva vedkommendes eget brukergrensesnitt viser, og ikke noe mer — serveren sier fortsatt nei.
Se tilbake på Designet en JSON‑passthrough‑arkitektur der PostgreSQL‑funksjoner returnerer komplett JSON som Go‑API‑et videresender uendret, noe som fjernet mellomliggende unmarshalling og frikoblet frontend fra skjemaendringer. Eller ta en titt på hele porteføljen.
Ett stykke av en lengre oversikt — og den ligger i sin helhet her.
Hver oppføring er skrevet på samme måte: situasjonen, oppgaven, hva vi gjorde, og hva som endret seg.