Utformade ett system för att växla organisationskontext med localStorage hos klienten och en speglad cookie på serversidan, så att användare kan agera som de organisationer de förvaltar medan auktorisering enligt minsta behörighet upprätthålls.
Arbetet utfört: 2025
agera som valfri organisation du förvaltar, på ett säkert sätt
Situation. På plattformen kan en yrkesverksam inom sjöfarten administrera organisationer — företag, akademier — som saknar egna inloggningar. Personen är kontot; organisationen är något personen agerar på uppdrag av. En användare behöver därför kunna röra sig genom hela appen som vilken som helst av de organisationer kontot administrerar och växla fritt mellan dem, och den bekvämligheten får inte bli ett hål i behörighetskontrollen.
Uppgift. Kontextbytet behövde gå snabbt och diskret för användaren, samtidigt som den aktiva kontexten aldrig på egen hand fick kunna ge någon åtkomst som personen inte hade rätt till.
Handling. En OrganizationContext sköter det, med lagring på båda sidor. På klienten är localStorage sanningskällan för vilken organisation du just nu agerar som, så bytet sker direkt — utan att gå via servern. En cookie på serversidan speglar valet så att serverrenderade sidor får samma kontext under SSR; på servern finns en getServerViewMode som läser den. Det avgörande är att inget av detta betraktas som tillförlitligt när åtkomst ska beslutas. Behörigheten kontrolleras på nytt på servern vid varje anrop. Kontexten i frontenden finns där för upplevelsen — att visa dig rätt saker — och servern är ensam om att avgöra vad du får göra.
Resultat. En användare kan utan friktion agera som vilken som helst av de organisationer kontot administrerar, och gränssnittet hålls synkroniserat på både klient och server. Men eftersom behörigheterna verifieras på serversidan varje gång sker ingenting av den bekvämligheten på säkerhetens bekostnad. Den som manipulerar innehållet i localStorage ändrar vad det egna gränssnittet visar och ingenting mer — servern säger fortfarande nej.
Ta en titt på hela portföljen.
En del av en längre historik — och den finns i sin helhet här.
Varje post är skriven på samma sätt: situationen, uppgiften, vad vi gjorde och vad som förändrades.