Skip to content

RBAC matrix ​

Source of truth in code: packages/domain/src/rbac.ts.

Roles ​

tenant_owner, admin, duty_lead, office, staff, viewer, platform_operator

Permissions by role ​

PermissionOwnerAdminDuty leadOfficeStaffViewerPlatform operator
config.manage✓✓✓
staff.import✓✓✓
rota.publish✓✓✓✓
rota.request_change✓✓✓✓✓✓
absence.create✓✓✓✓✓
override.last_resort✓✓✓✓
notify.configure✓✓✓
analytics.view✓✓✓✓✓
export.create✓✓✓✓✓✓
user.invite✓✓✓
ai.use✓✓✓✓
sso.configure✓✓
scim.configure✓✓
integrations.outlook.configure✓✓✓
audit.view✓✓✓
help.request.create✓✓✓✓✓✓✓

integrations.outlook.configure also covers Microsoft profile photos (same Entra admin setup).

School-wide Today and Timetable boards (and rota.today / week summary) are for every role except staff. Staff use My schedule only.

Missed work uses existing permissions: any linked staff member can log and undo their own items. Confirming suggestions and logging for someone else uses rota.publish or absence.create. School-wide lists and CSV use analytics.view.

Invite UI roles ​

The Admin invite form offers: Admin, Duty lead, Office, Staff, Viewer. Tenant owner is created at provisioning time.

See also ​

SchoolRota documentation. Every slot covered, every day.