Roles & permissions
ZSchool4u ships 16 seeded system roles. Platform roles run the SaaS. School roles run one tenant. Parent and student use family portals (web + APK).
For the one-page decision matrix, start with Who does what.
Hierarchy mind map
Workflow guides (primary school roles)
| Role | Guide | One-line job |
| --- | --- | --- |
| school_admin | School Admin | Full school CRUD, fee masters, Approvals checker |
| accountant | Accountant | Fee counter, Account Section, submit approvals |
| principal | Principal | Academics & leave; no Account Section / Approvals on web |
| vice_principal | Vice Principal | Like principal + Teacher Salary |
| class_teacher / teacher | Class Teacher | Attendance, homework, marks for assigned classes |
| parent | Parent portal | Child fees, results, leave, chat |
| student | Student portal | Own attendance, timetable, results, fees view |
Role cards (school)
School Admin (school_admin)
- Owns the school tenant: employees, students, classes, fee structure, attendance, exams, timetable, messages.
- Only role that clears the Approvals queue (approve / reject).
- Writes Income/Expense to the ledger immediately; can edit/delete IE entries.
- Has Account Section and Admin Settings and Plan & Billing.
Accountant (accountant)
- Day-to-day fee collect, dues, daily collection, ledgers, salary pay (default menus).
- Submits discounts / voids / overrides / IE creates for approval (maker).
- Sees My Approval Requests, not the school-wide Approvals inbox.
- Cannot delete students or employees (hard block). Cannot edit/delete live IE rows (school_admin only).
Principal (principal)
- Leadership: attendance, exams, academic year, messages, leave, complaints.
- Employees / students menus are read-only (no enroll / add employee tools).
- No Account Section and No Approvals on web — hand fees to Accountant / Admin.
Vice Principal (vice_principal)
- Same pattern as Principal, plus Teacher Salary pay flow.
Class Teacher (class_teacher / teacher)
- Class-scoped portal only. Not whole-school fee masters or Approvals.
Parent & Student
- Family portals for fees/receipts, results, notices, leave (parent), timetable (student).
Menu ACL (custom staff)
Default role menus are a starting pack. When School Admin adds or edits an employee, they can grant sidebar menu IDs (effective_menu_ids).
- Backend APIs gate sensitive actions with those menus (collect fee, pay salary, etc.).
- A few actions stay hard-denied for accountant even if ACL is generous (e.g. delete student / delete employee).
- Extra seeded roles (
hr_manager,receptionist,transport_manager,librarian) rely mainly on ACL + light defaults — use Who does what when designing logins.
All seeded roles
| Role name | Display | Scope | Typical use |
| --- | --- | --- | --- |
| platform_owner | Platform Owner | Platform | Full SaaS control |
| developer_team | Developer Team | Platform | Internal engineering |
| support_team | Support Team | Platform | Support tooling |
| super_admin | Super Admin | Platform | Schools registry, school admins |
| school_admin | School Admin | School | Full school CRUD + Approvals + settings |
| principal | Principal | School | Leadership; read-only people lists; no Approvals / Account Section |
| vice_principal | Vice Principal | School | Like principal + Teacher Salary |
| hr_manager | HR Manager | School | Staff-creatable; ACL-driven |
| accountant | Accountant | School | Fees, Account Section, submit approvals |
| receptionist | Receptionist | School | Staff-creatable; limited menus |
| transport_manager | Transport Manager | School | Staff-creatable |
| librarian | Librarian | School | Staff-creatable |
| teacher | Teacher | School | Maps to class-teacher portal |
| class_teacher | Class Teacher | School | Class-scoped teaching |
| parent | Parent | School | Child portal + APK |
| student | Student | School | Student portal + APK |
Permission highlights
- Approvals queue — school_admin clears; accountant submits only.
- Account Section — school_admin + accountant (principal / VP do not get it on web).
- Admin Settings / fee masters — school_admin (+ leadership settings for principal/VP).
- Fee collect — school_admin + accountant (and ACL holders of collect menu).
- Parent suspend / strong discipline — school_admin / principal paths — not accountant alone.