Skip to content

RBAC

Full user–role–permission RBAC across three granularities: API, button and data.

ObjectNotes
UsersDepartment, multiple positions, enable/disable, Excel import/export
RolesPermission set + data scope; super_admin bypasses checks
PermissionsCode convention {domain}:{resource}:{action}
MenusSeeded tree filtered by role; drives the sidebar
DepartmentsTree with a leader (used by the workflow "department leader" rule)
PositionsMany-to-many with users

Granularity: route middleware (Redis-cached permission sets) → API level; usePermission().hasPerm(code) → button level; role data scopes (all / department-and-below / self) auto-filter list queries → data level.

Seed new permission codes via SQL migration and grant them to super_admin; never hard-code role names in business logic.

MIT Licensed · Open-source Go microservices admin scaffold