Skip to content

RBAC Permission Matrix — FitZalo V2

Governance: NAMING_CONVENTIONS.md §4
Last updated: 2026-02-28 — Synced with PermissionString enum (57 permissions)

Standard Roles

Role CodeScopeDescription
SYSTEM_ADMINGlobalPlatform owner. Full access to every permission.
OWNERTenantFull control over a single tenant (excl. system-level).
ADMINTenantOperational manager. View + selective MANAGE for daily ops.
MEMBERTenantDay-to-day staff. View access + basic ops (order, inventory, inbox).
CUSTOMERTenantEnd-user. View-only access. Default role on signup.

Permission Matrix

Legend: ✅ = granted, — = denied

ModulePermissionSYS_ADMINOWNERADMINMEMBERCUSTOMER
IAMTENANT_VIEW
TENANT_MANAGE
TENANT_ADMIN
MEMBER_VIEW
MEMBER_MANAGE
ROLE_VIEW
ROLE_MANAGE
AUDIT_VIEW
NOTIFYNOTIFY_VIEW
NOTIFY_MANAGE
COMMS (ESN)COMMS_VIEW
COMMS_MANAGE
CATALOGCAT_VIEW
CAT_MANAGE
ORDERORDER_VIEW
ORDER_MANAGE
VOUCHERVOUCHER_VIEW
VOUCHER_MANAGE
INVENTORYINV_VIEW
INV_MANAGE
PROCUREMENTPROC_VIEW
PROC_MANAGE
PRODUCTIONPROD_VIEW
PROD_MANAGE
SHIPPINGSHIP_VIEW
SHIP_MANAGE
CMSCMS_VIEW
CMS_MANAGE
CMS_PUBLISH
PARTNER/CRMCRM_VIEW
CRM_MANAGE
INBOXINBOX_VIEW
INBOX_REPLY
INBOX_MANAGE
AIAI_VIEW
AI_MANAGE
ZALOZALO_VIEW
ZALO_MANAGE
PLUGINPLUGIN_VIEW
PLUGIN_MANAGE
BILLINGBILLING_VIEW
BILLING_MANAGE
FILEFILE_VIEW
FILE_MANAGE
FILE_UPLOAD
FILE_EDIT
FILE_DELETE
FILE_RESTORE
FILE_PROCESS
FILE_USAGE_VIEW
FILE_POLICY_VIEW
FILE_POLICY_MANAGE
ADMINADMIN_FULL
MDMMDM_MANAGE
ENABLEMENTBUSINESSTYPE_MANAGE
TENANT_ENABLEMENT_MANAGE
TENANT_ENABLEMENT_VIEW

Summary

RoleTotal PermissionsLogic
SYSTEM_ADMIN57All permissions
OWNER55All except TENANT_ADMIN, ADMIN_FULL
ADMIN37View + selective MANAGE (CAT, ORDER, INV, CRM, CMS, VOUCHER)
MEMBER27All _VIEW + INBOX_REPLY + ORDER_MANAGE + INV_MANAGE
CUSTOMER24All *_VIEW permissions

Notes

  • SYS_CAT_VIEW was previously listed but does not exist in the codebase. Removed.
  • Loyalty / Customer-Loyalty controllers reuse CRM_VIEW / CRM_MANAGE.
  • Balance controller reuses BILLING_VIEW / BILLING_MANAGE.
  • File permissions are granular (10 perms) to support fine-grained file operations.
  • ADMIN gets VOUCHER_MANAGE (added 2026-02-28) for daily operations.
  • Permission enforcement: @Permissions() decorator + PermissionsGuard + TenantGuard.

Note: SYSTEM_ADMIN has implicit access to all regular tenant permissions but special SYS_* permissions for global operations.

RBAC Implementation Rule

The backend MUST enforce permissions via a declarative guard:

typescript
@Permissions('ORDER_MANAGE')
@Patch(':id/status')
async updateStatus(...) { ... }
  • Multi-tenancy isolation (tenantId check) happens at TenantGuard.
  • RBAC check happens at PermissionsGuard by verifying the user's roles attached to their Membership for the current tenantId.

FitZalo Platform Documentation