School Reference Public

Roles & Access Map

Who does what in the ERPat School module and exactly which permission unlocks each screen and action — registrar, teacher/adviser, principal, guidance and clinic, system admin, plus the parent, student and gate-security surfaces.

Guide version: r1 Module version: 0.2.0 Updated: 2026-07-22 Estimated time: 7 min 3 views
START HERE

Roles & Access Map

Every School screen and action is permission-gated, so people see only what their job needs. This page maps the eight audiences to the exact permission keys that unlock their work, gives you a ready-to-apply preset per role, and explains the two guardrails — segregation of duties on grades, and restricted access to health and safeguarding records.

????
How gating works. The base permit is school (needed to reach the module at all). Each page has its own “Enabled” toggle in the Roles editor (e.g. school_grades), and many pages add _create / _update / _delete children for the buttons. A few permits are restricted or segregated and should go to specific people only. Grant them in the ERPat Roles editor.

The eight audiences

Pick the playbook that matches a person’s job — each links to a step-by-step guide.

Suggested permission presets

A practical starting point per role. Everyone gets school plus the permits below. Tune to your school’s org chart — these are recommendations, not hard-wired roles.

RoleGrant (in addition to school)Notable actions unlocked
Registrar school_enrollment (+create/update/delete), school_learners (+create/update/delete), school_guardians (+create/update/delete), school_academics (+create/update/delete), school_reports Add learners/guardians, verify links, process & approve applications, build the academic structure, run LIS validation.
Teacher / Adviser school_attendance (+_update), school_grades (+_update), school_grade_release Take & save attendance, encode WW/PT/QA, submit grades for release. Cannot approve/release.
Principal / School head school_grades, school_grade_approve, school_reports, school_export (+ read access across the pages they oversee) Approve & release grades, generate report cards, oversee enrollment, read reports & the audit trail.
Guidance school_support (+_create/_update), school_child_protection (+_create/_update), school_health Open & work support cases, handle confidential safeguarding cases, view restricted health records.
Clinic / Nurse school_health View restricted learner health / medical records (audited on view).
System administrator school_settings, plus whichever page permits are needed for provisioning/troubleshooting Configure School Settings (audited), manage portals, provision portal logins.
Front desk / Gate school_visitors (+_create) Issue passes, check visitors in/out (scan audited), revoke passes.
????
The full permission list. Every page has an “Enabled” permit (school_enrollment, school_learners, school_guardians, school_personnel, school_academics, school_lms, school_attendance, school_grades, school_communication, school_support, school_visitors, school_facilities, school_reports, school_settings), CRUD children on the pages that create/edit/delete records, and the restricted/SoD permits below. The exhaustive list is on the Reference page.

Segregation of duties & restricted permits

Four permits carry extra rules. Treat them deliberately — this is where the module’s child-safety and Data-Privacy posture lives.

⚖️
Grade release vs approve must be different people. school_grade_release lets a teacher/encoder submit grades; school_grade_approve lets the head approve, release, and generate report cards. The encoder can never approve their own grades — even if an account somehow held both permits, self-publishing is blocked. Assign release to teachers and approve to the head only. See Grading.
SoD
school_grade_releaseSubmit grades for release — the encoder’s permit.
SoD
school_grade_approveApprove, publish & make report cards — a different person than the encoder.
Restricted
school_healthView learner health/medical — audited on every view (view_health).
Restricted
school_child_protectionChild-protection / safeguarding (+_create/_update) — segregated, audited on read (view_safeguarding).
Compliance
school_exportExport / compliance downloads — the masterlist export is audited (export).
????️
Confidential by design. Safeguarding cases are segregated from the ordinary Student Support list — they never appear there — and the Support page only shows a guarded link into Safeguarding to holders of school_child_protection. Every read of a safeguarding case or a health record is audited (critical). Grant these permits only to the people who genuinely need them. See Data Privacy & Safeguarding and the Guidance & Clinic Playbook.

Which permission unlocks which page

The 14 staff pages in the School sidebar group, each with the base permit that reveals it and the notable action permits. (Two pages carry an extra menu gate — a setting that must be on before the menu item appears at all.)

PageRouteBase permitNotable action permits / gates
DashboardschoolschoolPermission-filtered quick-link cards.
Enrollment & Admissionsschool/enrollmentschool_enrollment_create/_update/_delete; approve/reject need _update.
Learnersschool/learnersschool_learners_create/_update/_delete; provision portal needs _update.
Parents & Guardiansschool/guardiansschool_guardians_create/_update/_delete; verify link & provision portal need _update.
Personnel & Teachersschool/personnelschool_personnel_create/_update/_delete.
Academic Structureschool/academicsschool_academics_create/_update/_delete across the tabs.
LMS Bridgeschool/lms_bridgeschool_lmsMenu also gated by module_courses (Learn). Fail-safe when off.
Attendanceschool/attendanceschool_attendanceMarking/bulk-save needs school_attendance_update.
Grades & Report Cardsschool/grades · school/report_cardsschool_gradesEncode needs _update; submit needs school_grade_release; approve/release/report cards need school_grade_approve.
Communicationschool/communicationschool_communicationLauncher tiles gated by module_announcement/module_message/module_event.
Student Supportschool/supportschool_support_create/_update. Guarded link into Safeguarding for school_child_protection holders.
Safeguarding confidentialschool/safeguardingschool_child_protectionRestricted (+_create/_update); every read audited.
Visitor Passschool/visitorsschool_visitorsMenu gated by school_visitor_pass_enabled; issue/scan need _create.
Facilities & Roomsschool/facilitiesschool_facilities_create/_update/_delete; facility tickets via Helpdesk (fail-safe).
Reports & Complianceschool/reportsschool_reportsMasterlist export needs school_export (audited).
School Settingsschool/settingsschool_settingsSaving is audited (update_settings).

Learner Health is a restricted view (school_health) surfaced where the domain appears, and is audited on view. The full route/permission catalog is on Reference.

Portal audiences (not staff)

Parents and students are not staff users and don’t appear in the Roles editor — they are core customer accounts, distinguished by their guardian/learner link. Their access is governed by settings and the verified link, not by staff permissions.

PortalRouteWhat lets them inWhat they see
Parent portal school/parent module_school and school_parent_portal_enabled on; core allow_customer_signin on; a provisioned login; and a verified guardian link. Only their verified children, and only released grades, plus each child’s attendance summary and active enrollment.
Student portal school/student module_school and school_student_portal_enabled on; core allow_customer_signin on; a login linked to their learner record. Their own released grades, attendance summary, and active enrollment. If not linked to a learner, a “no record” page shows.
????
Portals are IDOR-proof. A parent’s child set is derived strictly from the session user via the verified guardian link — no learner id is ever taken from the URL. A student resolves to their own learner record only. Read the two portal playbooks: Parent and Student.

Next steps

Was this guide helpful?

Report a content problem