Stávající autorizace (DbAuthorizator) byla triviální: přihlášen = může vše. Pro produkční helpdesk nasazení potřebujeme granulární řízení přístupu — agent nesmí vidět tickety jiného tenantu, admin má jiná práva než agent.
Uvažované varianty:
A) Trivial role check — role=admin/agent/client, statický if/else
B) Hierarchical RBAC s capability-first modelem — atomické capability, scope, dědičnost
C) Policy-based (OPA, Casbin) — flexibilnější, ale výrazně komplexnější pro aktuální scale
Rozhodnutí
✓ Chosen: B — Hierarchical RBAC s capability-first modelem
Capability = atomická schopnost systému (p21.ticket.resolve). Namespace: {app_code}.{module_code}.{action}. Scope: global | tenant. Dědičnost rolí: Observer ← Agent ← Admin ← SystemAdmin.
Důvody výběru B nad alternativami:
1. Varianta A neškáluje — při přidání nového modulu nebo role nutná změna kódu
2. Varianta C (OPA) je over-engineering pro single-tenant helpdesk fáze 1
3. Variant B umožňuje přidávat nové capability bez změny schématu
DbAuthorizator zůstává jako fallback pro legacy kontroly, přechod na checkCapability() je postupný per-presenter.