- 13 roles, at three levels of reach
- A global support role, a company-level super administrator that spans every branch, and eleven branch-scoped roles: administrator, branch manager, accountant, sales, purchase, production, inventory, quality control, inspection, service and viewer. The list in the code and the list in the database are checked against each other automatically, so they cannot drift.
- Four independent authorisation axes
- Role, module and sub-module permission, business mode and plant capability are all evaluated and combined. All of them fail closed — an unrecognised permission is denied, not allowed.
- 64 enforced permission keys
- Generated from a single source and shipped to the browser as well as enforced on the server, so the interface and the API cannot disagree about what a user may do.
- A disabled feature says so
- Turning a module off returns an explicit feature-disabled response rather than a 404 or a generic error, so a user is told they do not have it instead of being told something is broken.
- Session policy
- Cookie-based sessions with a single active session per user, a password-verified way to log out your other device, sixty-minute idle logout, and every authentication failure recorded.