
„Razdvajanje u klijentu je organizacija, ne sigurnost.“
Pet vrsta korisnika, jedan kod
Serviseri, vozni parkovi, samostalni vozači, vozači u firmi i call centar — jedan proizvod, pet iskustava, dozvole razriješene po tipu i roli.
Platforma je služila pet vrsta korisnika sa stvarno različitim poslovima. Serviser upravlja oglasima, fakturama i obnovama. Vozač ima nedavne pretrage, preferirane servisere, evidenciju poziva, kamione i radne naloge. Operater call centra radi u ime drugih.
Sve iz jednog koda, sa odvojenim internim CRM-om za vlastiti tim kompanije.
Problem
Ograničenje
if naredbama.Šta smo uradili
Razdvojeno po ruti, ne po uslovu
Svaka vrsta korisnika ima svoj set ruta pod
/dashboard/{user_type}/{page}. Da biste znali šta serviser može, pročitate servisereve rute — ne cijelu aplikaciju u potrazi zaifnaredbama.Jedan set ruta, jedan odgovorDozvola se razrješava kao tip plus rola
Svaka vrsta korisnika nosi najmanje dvije role — admin, vlasnik, operater — a dozvola se razrješava kao kombinacija. Serviserov operater je drugi subjekt od operatera voznog parka, iako se oba zovu „operater“.
Isto ime, drugi subjektProvjeravano i na backendu
Razdvajanje po rutama u klijentu je organizacija, ne sigurnost. API validira nezavisno, jer ono što se provodi samo u sučelju provodi se samo prema ljudima koji koriste sučelje.
Organizacija nije sigurnostAPI podijeljen na dva
Javne i admin rute su odvojeni setovi, a ne jedan set sa provjerama unutra. Interni CRM je zapravo svoj proizvod na svojoj površini.
506 ruta, dva seta
Upravlja oglasima, fakturama i obnovama. Njegov operater vidi oglase ali ne fakture — ista rola, drugi tip korisnika, druga dozvola.
Rezultat
- Pet vrsta korisnika i njihove role iz jednog koda
- 506 API ruta kroz dva odvojena seta
- Dozvole se revidiraju čitanjem jednog seta ruta, a ne cijele aplikacije
Šta bismo uradili drugačije
Model dozvola koji smo izgradili živio je u rutiranju i u API-ju, ali ga nikad nismo zapisali nigdje gdje ga čovjek može pročitati u cjelini. Uvođenje novog developera značilo je usmeno objašnjavanje, a usmena objašnjenja modela autorizacije odlutaju. Jedna generisana tabela — vrsta korisnika prema akciji — trajala bi dan i odgovorila na to pitanje zauvijek.
- React
- Redux
- Node.js
- Express
- MySQL