RBAC model
Tento dokument definuje tenant-scoped role-based access control (RBAC) model vhodný pro multi-tenant B2B SaaS prostředí OPORA.
Ověřeno proti implementaci 6. 9. 2026. Zdrojem statických oprávnění je authorization.ts v aplikační vrstvě; konkrétní akce přidávají další kontroly. Popis role není oprávněním obejít stav projektu, technické schválení, kvalifikaci, MFA ani předplatné.
Principy
Detailní permission matici pro členy, pozvánky, explicitní přijetí a kapacitu definuje ../03-application/team-invitations-and-seat-management.md.
- Tenant-scoped: role platí v rámci Organizace, ne globálně.
- Least privilege: uživatelé mají mít minimum potřebných oprávnění.
- Action-based: oprávnění gateují akce (create/edit/export/manage), ne pouze viditelnost stránek.
Role (základ)
Owner
- Plná kontrola tenant settings a billing.
- Může spravovat členy a role.
- Má projektová a exportní oprávnění včetně archivace/obnovy. Každá akce stále podléhá svým validačním, technickým a tarifním podmínkám.
- Může spravovat existující přístupy i bez aktivního předplatného; nové pozvánky vyžadují aktivní týmový tarif a volné místo.
Admin
- Spravuje projekty a sklad; může archivovat/obnovit projekt při splnění jeho podmínek.
- Může spravovat členy jen pokud je zapnutá organizační politika
allowAdminMemberManagement, je dostupný entitlementrbac_collaborationa předplatné jeACTIVE. Samotná roleADMINnestačí. - Nemá vlastnictví billingu.
Engineer
- Může vytvářet a editovat Projekty.
- Může spouštět výpočty a prohlížet výsledky.
- Má
export_resultsaexport_internal_pricing. Může exportovat výsledky při splnění podmínek konkrétního exportu; PDF/XLSX navíc vyžadují aktivní předplatné aadvanced_exports. - Může vytvářet návrhy dokumentů, nahrávat je a odesílat ke kontrole (
submit_document_review). Nemáapprove_document,issue_documentanimanage_document_shares; export výsledků není schválení/vydání dokumentu. - Může pracovat s provozním workflow lešení podle jeho dalších kontrol. Nemůže archivovat/obnovit projekt ani spravovat členy nebo billing.
Viewer
- Má
view_results,view_documentsaview_warehousev rámci organizace. - Nemá editační, výpočetní, exportní ani schvalovací oprávnění; změna tarifu sama žádné z těchto rolových oprávnění nepřidává.
Skupiny oprávnění (příklady)
- Správa organizace
- správa nastavení organizace
- správa členů/rolí
- správa billingu
- Projektové akce
- vytvořit projekt
- editovat vstupy
- spustit výpočet
- prohlížet výsledky
- exportovat výsledky
- revize dokumentů: návrh a odeslání ke kontrole; zvlášť schválení a vydání
- správa sdílení dokumentů (Owner/Admin, navíc podmínky konkrétní akce)
- Přístup k modulům
- čtení skladu pro všechny čtyři role
- změny skladu pro Owner/Admin; dostupnost modulu neurčuje rozsah pilotní přejímky
Enforcement body
- Server-side guardy pro všechny
/app/* routy (data loadery) a server actions. - Tenant scope a oprávnění se kontrolují na serveru před zpřístupněním dat nebo provedením změny. Pořadí se mezi routami liší; samotné ID zdroje není přístup.
- UI může skrývat akce, ale skrývání v UI není bezpečnost.
Interakce se subscription
RBAC odpovídá “smí to uživatel udělat?”, zatímco subscription gating odpovídá “je tato funkce dostupná?”.
Pro gated akce (např. pokročilé exporty) musí projít obě:
- export akce na
/app/projects/[projectId]/results: - základní CSV export vyžaduje
export_resultsa platný, exportovatelný výsledek - nový pokročilý PDF/XLSX export vyžaduje
export_results, aktivní předplatné,advanced_exportsa splnění projektových/technických kontrol
Ani Owner/Admin nemohou pouhou rolí schválit vlastní revizi dokumentu nebo obejít požadovanou kvalifikaci. Podmínky konkrétní revize, nezávislého schválení a odborných/provozních kroků se vyhodnocují odděleně od této základní RBAC vrstvy.