RBAC and permissions
Roles, permissions, and scoping — who can see and do what.
2 min readLast updated 13 Apr 2026
RBAC runs on three concepts: roles (bundles of permissions), scopes (which records a role applies to), and constraints (extra conditions).
Built-in roles
- TENANT_ADMIN — everything on the tenant.
- ADMIN — administrative but not destructive (can't delete tenant).
- OPS_ADMIN / OPS_USER — forwarding operations.
- ROAD_ADMIN / ROAD_USER — road module.
- WAREHOUSE_ADMIN / WAREHOUSE_USER — warehousing.
- FINANCE_ADMIN / FINANCE_USER — finance.
- COMMERCIAL_ADMIN / COMMERCIAL_USER — CRM / sales.
- PROCUREMENT_ADMIN / PROCUREMENT_USER — vendor management.
- COMPLIANCE — read-only access to all data + compliance actions.
- SUPPORT_READONLY — read-only, no exports.
Custom roles
Tenants can build custom roles picking from the permission catalog. Example: "Contract Desk" = read all quotes, create/edit rate cards, no finance access.
Permissions
Permissions are <domain>.<action> tokens:
shipment.view,shipment.edit,shipment.create,shipment.delete.invoice.view,invoice.issue,invoice.dispute.ratecard.publish,ratecard.approve.user.invite,user.reset-password.
Full catalog at /app/admin/permissions.
Scopes
A role can apply to:
- Tenant-wide — all records.
- Entity — multi-entity groups.
- Warehouse / depot — ops staff bound to a location.
- Own records — records where the user is owner / creator / AE / collector.
Example: a warehouse operator has WAREHOUSE_USER scoped to WH-DXB-01 only — can't see WH-LHR-01.
Constraints
Extra conditions on top of role + scope:
- Amount ceilings — can approve only up to X USD.
- Segregation — can't approve something you created.
- Time windows — contractor-type accounts active only during business hours.
Object-level overrides
Rare cases: lock an individual record (highly confidential opportunity, legal-hold invoice) to a named list of users. Overrides the usual role + scope rules for that object only.
Role audit
Every role change + permission change + assignment change is audited. Quarterly access review (templated report) supports SOX / SOC 2.
Best practice
- Prefer specific roles over TENANT_ADMIN for everyday work.
- Use scope to limit warehouse / depot users to their location.
- Review roles quarterly — joiners / movers / leavers drift.
Was this article helpful?