Projekat 08 · Marketplace i prihodi
Pet vrsta korisnika u istom codebaseu, razdvojenih po rutama
Serviseri, vozni parkovi, samostalni vozači, vozači zaposleni u firmama i call centar imali su svaki svoj dashboard, a dozvole su zavisile od vrste korisnika i uloge.
506 ruta
glavna brojka
1 ograničenje
Pet vrsta korisnika koristilo je platformu za različite poslove, a svaka izmjena u plaćanju, brendiranju ili sigurnosti morala je stići do svih pet.
Priča u 5 koraka
Stack
- React
- Redux
- Node.js
- Express
- MySQL
01 · Kontekst
Platformu je koristilo pet vrsta korisnika i svaka je na njoj radila nešto drugo.
Platformu je koristilo pet vrsta korisnika i svaka je na njoj radila nešto drugo. Serviser je upravljao oglasima, fakturama i obnovama. Vozač je imao nedavne pretrage, omiljene servisere, evidenciju poziva, kamione i naloge za popravku. Operater call centra radio je u ime drugih korisnika.
Za svih pet postojao je jedan codebase, a zaposleni u kompaniji koristili su zaseban interni CRM.
02 · Nije se smjelo mijenjati
Pet odvojenih aplikacija izgleda kao čistije rješenje, a otprilike prvih šest mjeseci je i brže.
Pet odvojenih aplikacija izgleda kao čistije rješenje, a otprilike prvih šest mjeseci je i brže.
S pet aplikacija svaka zajednička izmjena, na primjer novi tok plaćanja, promjena brendiranja ili sigurnosna zakrpa, mora se napraviti pet puta. Napravit će se četiri puta i niko neće primijetiti koja je propuštena dok to ne primijeti klijent.
Jedna aplikacija s uslovima za uloge razbacanim po interfejsu suprotna je greška i jednako je česta. Takvu verziju nije moguće provjeriti, jer se na pitanje „šta vozač zapravo može uraditi?“ može odgovoriti samo čitanjem cijelog codebasea u potrazi za uslovima.
03 · Šta sam uradio
Vrste korisnika razdvojio sam po rutama. Svaka vrsta imala je svoj skup ruta pod /dashboard/{user_type}/{page}, pa su serviserove rute pokazivale sve što serviser može uraditi.
Vrste korisnika razdvojio sam po rutama. Svaka vrsta imala je svoj skup ruta pod /dashboard/{user_type}/{page}, pa su serviserove rute pokazivale sve što serviser može uraditi.
Dozvole su zavisile od vrste korisnika i uloge. Svaka vrsta korisnika imala je najmanje dvije uloge, na primjer admin, vlasnik ili operater, a dozvola se određivala za kombinaciju vrste i uloge. Operater servisera bio je drugi subjekt nego operater voznog parka, iako su se obojica zvali „operater“.
Dozvole je provjeravao i backend. Odvojene rute u klijentu samo su organizovale kod, pa je API svaku dozvolu provjeravao nezavisno. Pravilo koje postoji samo u interfejsu može zaobići svako ko API pozove direktno.
API sam podijelio na dva dijela. Javne i admin rute bile su dva odvojena skupa, umjesto jednog zajedničkog skupa s provjerama unutar njega. Interni CRM bio je praktično zaseban proizvod sa svojim endpointima.
04 · Rezultat
Pet vrsta korisnika i njihove uloge u jednom codebaseu
- Pet vrsta korisnika i njihove uloge u jednom codebaseu
- 506 API ruta u dva odvojena skupa
- Dozvole koje se mogu provjeriti čitanjem jednog skupa ruta
05 · Šta bih uradio drugačije
Model dozvola postojao je u rutiranju i u API-ju, ali nigdje nije bio zapisan tako da ga čovjek može pročitati u cjelini.
Model dozvola postojao je u rutiranju i u API-ju, ali nigdje nije bio zapisan tako da ga čovjek može pročitati u cjelini. Svakom novom developeru objašnjavao se usmeno, a usmena objašnjenja modela autorizacije s vremenom se izobliče. Trebao sam generisati jednu tabelu koja ukršta vrste korisnika i akcije. To bi trajalo jedan dan i zauvijek riješilo to pitanje.
Povezane usluge
Usluge koje se oslanjaju na ovaj projekat.
- Web razvojFull-stack web razvojJedan codebase za marketplace s pet vrsta korisnika i dozvolama prema tipu i ulozi. API ponavlja svaku provjeru koju napravi interfejs.
- Web razvojMulti-tenant i white-label SaaSNa marketplaceu za usluge kamionima jedan codebase služio je pet vrsta korisnika: servisere, vozne parkove, samostalne vozače, vozače u firmi i call centar. Dozvola je kombinacija tipa i uloge, pa operater servisera i operater voznog parka imaju različita prava.
- Web razvojMarketplace i logističke platformeAmerički marketplace za usluge kamionima, na kojem svaka vrsta korisnika ima svoje rute, a šta korisnik smije raditi zavisi i od njegovog tipa i od uloge. API ima 506 ruta, podijeljenih u dva odvojena skupa: javni i admin.
- Web razvojAdmin paneli i interni alatiNa istoj platformi, zaseban CRM za zaposlene same firme. Radi samo s admin skupom API ruta, koji je odvojen od ruta koje koriste korisnici platforme.
- Web razvojArhitektura React SPADashboardi u Reactu i Reduxu za pet vrsta korisnika na američkom marketplaceu. Svaka vrsta korisnika dobila je svoju granu routera, /dashboard/{user_type}/{page}, pa provjere uloga nisu završile razbacane po komponentama.
- Backend, podaci i integracijeAPI i backend razvojZa američki marketplace s pet vrsta korisnika napravili smo 506 API ruta, odvojenih u javni i admin skup. API sam provjerava dozvole i to ne prepušta interfejsu.
- Backend, podaci i integracijeDozvole i RBACNa američkom marketplaceu pet vrsta korisnika radi u jednom codebaseu, a svaka ima najmanje dvije uloge. Dozvola se određuje prema tipu i ulozi zajedno, pa operater kod servisera i operater kod voznog parka imaju različite dozvole. Svih 506 API ruta podijeljeno je na javni i administratorski skup.
- Regulisani i osjetljivi sistemiSigurnosna revizijaPet vrsta korisnika, od servisera do call centra, koristi jedan codebase. Svaki tip ima svoje rute. Dozvole se određuju kombinacijom tipa i uloge, a API ih sam provjerava umjesto da vjeruje ruti s koje je zahtjev došao.
- AISupabase pregledJedan codebase za pet vrsta korisnika, u kojem operater kod servisera i operater kod voznog parka imaju različita prava, jer se dozvola određuje iz tipa korisnika i uloge zajedno. Backend je provjerava još jednom, jer razdvajanje ruta u klijentu samo organizuje interfejs.
Projekat 08
Radite na sličnom problemu? Odgovaramo u roku od jednog radnog dana.
Prvi poziv traje 30 minuta i ni na šta vas ne obavezuje.