Skip to content

PRD: Operations Staff & Access Administration (Back Office)

ModuleUser ManagementPRD IDPRD-OPS-001
StatusReady to devFEATOPS · BANA-1435
EpicBANA-1336PlaneBANA-1738
Date2026-06-26Versionv1.0
Packages@nx/identityURDOPS
SurfaceBO · Ops
OwnerPhát Nguyễn · Hải Cao

What operations staff administration is

The Back Office is the operations team's internal admin portal. It carries one dedicated screen to administer internal accounts (system users): create an account, assign the right internal fixed role (SYSTEM), reset a password, deactivate an account. Internal accounts stay strictly separate from a merchant's own staff (EMP) and from end customers (CUS) - never mixed into the same list.

The Back Office already had the Access Control area, and the User Management backend already supported the full user / role / permission lifecycle. This increment closes the remaining gap: naming that surface as operations-staff administration, tying it to the fixed-role hierarchy, and specifying the safety rule for granting access.

Three fixed roles and the priority ceiling

Three internal fixed roles, seeded ahead of time with a descending priority hierarchy:

RolePriority
Super Admin999
Admin900
Operator600

These roles are defined in ROLE - Permissions URD. The platform-wide priority-ceiling rule applies to internal accounts too: "to create, edit, delete, or grant a role, that role's priority must be STRICTLY LOWER than the caller's own highest priority. Equal does not qualify either." An Admin (900) cannot grant the Admin or Super Admin role to anyone, not even to themselves; only a Super Admin can grant the Admin tier.

One internal account, from creation to daily use

The first Super Admin is bootstrapped outside this UI. From there, that Super Admin creates an account for the operations team's first Admin → that Admin signs in, opens the internal-staff admin screen, and creates an account for a new Operator with sign-in credentials and the Operator role → the Operator signs in right away with the issued username and password. One day the Admin tries to grant the Admin role to that Operator to widen their access: the role picker shows neither Admin nor Super Admin, only Operator - the priority ceiling blocks it right at the UI. Weeks later the Operator forgets their password; the Admin uses the "Reset password" row action to issue a new one, no database access needed. Before handing over more work, the Admin opens "View effective access" on that Operator to review exactly what they can do.

The easiest thing to get wrong

A pre-filled password on account creation is a vulnerability, not a convenience

The internal-account creation form used to pre-fill a fixed sample password. If an operator saved it as-is, many internal accounts ended up sharing one guessable password - a security hole that silently spreads across the operations team.

The password field must always start empty on the create form; the person filling it in is required to type a fresh password for every account.

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.