Patru noțiuni explică aproape tot ce vezi în platformă - firma, contul, rolul și modulul. Odată înțelese, restul documentației se citește ușor.
Firma
Firma este unitatea de bază. Are datele legale (denumire, CUI, Registrul Comerțului, sediu, conturi bancare), un tip (restaurant, agentie sau gol), tema vizuală și logo-ul.
Toate datele de lucru (produse, facturi, comenzi, oameni) au o coloană firma_id. Baza de date aplică regula „vezi doar firma ta” pe fiecare tabel, cu Row Level Security în mod FORCE: chiar și o greșeală în cod nu poate întoarce rândurile altei firme.
ALTER TABLE produse ENABLE ROW LEVEL SECURITY;
ALTER TABLE produse FORCE ROW LEVEL SECURITY;
CREATE POLICY izolare_firma ON produse
USING (firma_id = nullif(current_setting('app.firma_id', true), '')::uuid);Contul
Un cont este un om. Același cont poate avea acces la mai multe firme, cu un rol diferit în fiecare. În antetul aplicației alegi firma activă; tot ce citești și scrii după aceea se întâmplă doar în firma aceea. Firma stă în adresa paginii (/app/<firma>/…), deci fiecare tab al browserului poate lucra pe altă firmă; o adresă fără firmă rămâne pe firma din sesiune. Dacă nu mai ai acces la firma din adresă, platforma răspunde 403.
Dacă lucrezi pentru două firme (de exemplu restaurantul și agenția), nu ai nevoie de două conturi. Ai un singur cont, cu acces la amândouă.
Rolul
Rolul spune ce poate face un om într-o firmă. Platforma cunoaște opt roluri de firmă:
| Rol | Pentru cine |
|---|---|
admin | administratorul firmei: oameni, drepturi, module, setări |
patron | proprietarul: vede tot ce ține de afacere |
finante | facturi, plăți, evidență financiară |
gestiune | stoc, recepții, furnizori |
bucatar | bucătăria: meniu, rețete, ingrediente |
casier | vânzarea și casa de marcat |
marketing | social media, reclame, recenzii |
angajat | acces de bază la paginile primite |
Separat, executor e rolul tehnic al jetoanelor de serviciu ale agenților de pe server; nu se dă unui om.
Peste rol se pot adăuga drepturi fine (de exemplu dreptul de a edita meniul) și pagini individuale, bifate sau scoase pentru fiecare om. Detaliile sunt în Roluri și drepturi.
Modulul
Un modul este o funcție a platformei pe care firma o activează sau nu: meniul, agenția, facturile, Backstage și așa mai departe. Tabelul module_firma ține, pentru fiecare firmă, ce module are active.
Un modul inactiv nu apare în meniu. Drepturile pe rute le decide rolul, nu lista de module: azi doar agenția își verifică și modulul la fiecare cerere. Lista completă este în secțiunea Module din meniul din stânga.
Cum se leagă
Firma (Ilustromania, agentie)
├── module active: agentie, backstage, social, oferte ...
└── acces_firma
└── Ana → rol: marketing