Role gate
What renders when the operator hits a surface their role can't access. Three flavours — full block, partial restriction, soft preview.
Full block
The whole page is denied. Show the role needed, who can grant it, and an action.
Payroll needs Accountant or Owner role
Robert Mukamba can grant it from Settings · Members.
Partial restriction · masked data
The operator can see the surface but sensitive columns (salary, ID number) are masked.
Employees
| Name | Role | ID number | Salary |
|---|---|---|---|
| Faith Moyo | Cashier | ●● ●●●●●● ● ●● | $ ●●● |
| Alex Chiwanza | Cashier | ●● ●●●●●● ● ●● | $ ●●● |
| Mai Ndlovu | Bursar | ●● ●●●●●● ● ●● | $ ●●● |
| Stanford Kuda | Plant manager | ●● ●●●●●● ● ●● | $ ●●● |
Soft preview · upgrade prompt
Show a blurred preview of what the surface would look like with an unlock CTA — used for paywalled features in lower tiers.
Advanced reports
Unlock advanced reports
Multi-site rollups, cost variance, margin trends. Available on Operator and Enterprise plans.
Shared rules
Name the role and the operator who can grant it.
Render a generic 403. The operator did nothing wrong.
Make "Request access" a real action.
Hide the sidebar item entirely. Show greyed; click leads here.