Roles & Permissions Guide
Roles: School Admin
Roles and Permissions control who can access what features in the system. Proper role configuration ensures security, prevents unauthorized access, and gives users exactly the capabilities they needβnothing more, nothing less.
This system uses role-based access control (RBAC) powered by Spatie Laravel Permission. Each user is assigned one or more roles, and each role has specific permissions.
Overviewβ
What Are Roles?β
Roles are predefined sets of permissions assigned to users based on their job function. Examples:
- School Admin - Full access to all school features
- Teacher - Access to classes, attendance, assignments, exams
- Guardian - View child's progress, pay fees, communicate
- Student - View timetable, submit assignments, take exams
What Are Permissions?β
Permissions are specific capabilities within the system. They follow a module-action pattern:
student-list- View list of studentsstudent-create- Add new studentsstudent-edit- Modify student recordsstudent-delete- Remove students
Standard Actions:
- list - View records in a module
- create - Add new records
- edit - Modify existing records
- delete - Remove records
How They Work Togetherβ
User β Assigned Role(s) β Role Has Permissions β Access Granted/Denied
Example:
User: Mr. Obi
Role: Teacher
Permissions: attendance-list, attendance-create, assignment-list, assignment-create, ...
Result: Can mark attendance and create assignments for assigned classes
π Default Rolesβ
The system comes with predefined roles that cover most school scenarios.
School Adminβ
Purpose: Full control of school operations
Key Responsibilities:
- Configure school settings and academic structure
- Manage all users (students, staff, parents)
- Create and assign roles
- Access all reports and analytics
- Manage fees, exams, and results
Default Permissions: 100+ permissions covering all modules
Cannot Be:
- Deleted
- Renamed
- Modified (core permissions)
The first user created when setting up a school is automatically assigned the School Admin role.
Teacherβ
Purpose: Manage assigned classes, students, and academic activities
Key Responsibilities:
- Mark attendance for assigned classes
- Create and grade assignments
- Create and manage lessons/topics
- Enter exam marks
- Communicate with students and parents
- View class-specific reports
Default Permissions:
attendance-list,attendance-createassignment-list,assignment-create,assignment-edit,assignment-deleteassignment-submission(view student submissions)lesson-list,lesson-create,lesson-edit,lesson-deletetopic-list,topic-create,topic-edit,topic-deleteexam-upload-marksonline-exam-create,online-exam-list,online-exam-edit,online-exam-deleteonline-exam-questions-create,online-exam-questions-list,online-exam-questions-edit,online-exam-questions-deleteclass-teacher(if designated as class teacher)student-diary-create,student-diary-list,student-diary-edit,student-diary-deleteannouncement-list(view announcements)
Scope: Teachers only see data for classes/subjects they're assigned to (see Teacher-Subject Assignment)
Cannot Be:
- Deleted
- Renamed
Guardian (Parent)β
Purpose: Monitor child's academic progress and communicate with school
Key Responsibilities:
- View child's attendance, assignments, grades
- Pay school fees
- Communicate with teachers
- View timetable and announcements
- Download reports and results
Default Permissions:
- Auto-granted view access to child's data only
- No create/edit/delete permissions
- No admin or staff-level access
Special Behavior:
- Can have multiple children in the school
- Automatically linked when child is registered
- Access limited to their own children's data
Cannot Be:
- Deleted
- Renamed
- Given staff-level permissions
Studentβ
Purpose: Access learning materials and submit work
Key Responsibilities:
- View timetable and announcements
- Submit assignments
- Take online exams
- View grades and results
- Communicate with teachers (if enabled)
Default Permissions:
- Auto-granted view access to their own data
- Submit assignments
- Take exams
- View class materials (lessons, topics)
Scope: Students only see their own data, never other students'
Cannot Be:
- Deleted
- Renamed
- Given staff-level permissions
Driverβ
Purpose: Manage transportation routes and student pickups/dropoffs
Key Responsibilities:
- View assigned routes and schedules
- Mark student attendance on bus
- Start and end trips
- Report issues or delays
- View route details
Default Permissions:
route-listpickup-points-listRouteVehicle-list- Transportation attendance marking
Scope: Only see assigned routes and students
Helperβ
Purpose: Assist driver with transportation operations
Key Responsibilities:
- Support driver with student management
- Help with attendance
- Monitor student safety
Default Permissions:
- Similar to Driver but may have limited capabilities
- Typically assigned alongside a driver
π§ Custom Rolesβ
Beyond default roles, you can create custom roles for specific staff positions.
When to Create Custom Rolesβ
Create custom roles for:
- β Front desk staff (limited to admissions, inquiries)
- β Accountants (fees, payroll, expenses only)
- β Registrars (student records, transfers only)
- β Department heads (view reports, manage specific subjects)
- β IT support staff (system settings only)
- β Librarians (if you add library module)
Don't create custom roles for:
- β Individual users (assign permissions to role, not user directly)
- β Temporary access (grant temporarily, then revoke)
- β Very similar to existing roles (use existing role + additional permissions)
Creating a Custom Roleβ
Step 1: Access Role Management
- Log in as School Admin
- Go to Settings β Roles & Permissions (or Staff β Roles)
Step 2: Create New Role
- Click Add Role or Create Role
- Enter role details:
- Role Name - Descriptive name (e.g., "Accountant", "Front Desk")
- Description (optional) - Purpose of this role
- Click Next or Create
Step 3: Assign Permissions
- Review the permission list (organized by module)
- Check boxes for permissions this role needs
- Consider the least privilege principle - grant only necessary permissions
- Click Submit or Save
Example: Creating an Accountant Role
Role Name: Accountant
Description: Manages fees, expenses, and financial reports
Permissions:
β fees-list
β fees-paid
β fees-config
β fees-type-list
β fees-class-list
β expense-list
β expense-create
β expense-edit
β expense-category-list
β reports-expense
β student-list (view only, for fee collection)
β student-create (not needed)
β student-edit (not needed)
β student-delete (not needed)
Step 4: Assign Role to Users
- Go to Staff β Staff List
- Edit the user who needs this role
- In the Role dropdown, select your custom role
- Click Save
π Complete Permission Listβ
The system has 100+ permissions organized by module. Here's the complete list:
Academic Managementβ
Medium (Language of Instruction)
medium-list- View mediumsmedium-create- Add new mediummedium-edit- Modify mediummedium-delete- Delete medium
Section
section-list,section-create,section-edit,section-delete
Class
class-list,class-create,class-edit,class-delete
Class Section
class-section-list,class-section-create,class-section-edit,class-section-delete
Subject
subject-list,subject-create,subject-edit,subject-delete
Session Year
session-year-list,session-year-create,session-year-edit,session-year-delete
Semester
semester-list,semester-create,semester-edit,semester-delete
Stream
stream-list,stream-create,stream-edit,stream-delete
Shift
shift-list,shift-create,shift-edit,shift-delete
Class Group
class-group-list,class-group-create,class-group-edit,class-group-delete
Timetable
timetable-list,timetable-create,timetable-edit,timetable-delete
Grades
grade-list,grade-create,grade-edit,grade-delete
User Managementβ
Teacher
teacher-list,teacher-create,teacher-edit,teacher-deleteclass-teacher- Designate as class teacher
Staff
staff-list,staff-create,staff-edit,staff-delete
Guardian (Parent)
guardian-list,guardian-create,guardian-edit,guardian-delete
Student
student-list,student-create,student-edit,student-deletestudent-reset-password- Reset student passwordstudent-change-password- Change student passwordreset-password-list- View password reset requestspromote-student-list,promote-student-create,promote-student-edit,promote-student-deletetransfer-student-list,transfer-student-create,transfer-student-edit,transfer-student-delete
Role Management
role-list,role-create,role-edit,role-delete
Attendance & Diaryβ
Attendance
attendance-list- View/mark attendanceattendance-create- Mark attendance (often combined with list)
Staff Attendance
staff-attendance-list- View staff attendancestaff-attendance-edit- Mark/edit staff attendance
Student Diary
student-diary-list,student-diary-create,student-diary-edit,student-diary-delete
Learning & Assignmentsβ
Lessons
lesson-list,lesson-create,lesson-edit,lesson-delete
Topics
topic-list,topic-create,topic-edit,topic-delete
Assignments
assignment-list,assignment-create,assignment-edit,assignment-deleteassignment-submission- View student submissions
Assign Elective Subjects
assign-elective-subject-list,assign-elective-subject-create,assign-elective-subject-edit,assign-elective-subject-delete
Exams & Resultsβ
Offline Exams
exam-list,exam-create,exam-edit,exam-deleteexam-timetable-list,exam-timetable-create,exam-timetable-deleteexam-upload-marks- Upload marks via Excelexam-result- View exam resultsexam-result-edit- Edit published resultsview-exam-marks- View marks
Online Exams
online-exam-list,online-exam-create,online-exam-edit,online-exam-deleteonline-exam-questions-list,online-exam-questions-create,online-exam-questions-edit,online-exam-questions-deleteonline-exam-result-list- View online exam results
Fee Managementβ
Fees Configuration
fees-config- Configure fee structurefees-classes- Assign fees to classesfees-paid- Mark fees as paid / fee collection
Fee Types
fees-type-list,fees-type-create,fees-type-edit,fees-type-delete
Fee Classes
fees-class-list,fees-class-create,fees-class-edit,fees-class-delete
Fees (General)
fees-list,fees-create,fees-edit,fees-delete
Expense Managementβ
Expense Categories
expense-category-list,expense-category-create,expense-category-edit,expense-category-delete
Expenses
expense-list,expense-create,expense-edit,expense-delete
Payroll & Leaveβ
Payroll
payroll-list,payroll-create,payroll-edit,payroll-delete
Payroll Settings
payroll-settings-list,payroll-settings-create,payroll-settings-edit,payroll-settings-delete
Leave Management
leave-list,leave-create,leave-edit,leave-deleteapprove-leave- Approve/reject leave requests
Transportationβ
Routes
route-list,route-create,route-edit,route-delete
Pickup Points
pickup-points-list,pickup-points-create,pickup-points-edit,pickup-points-delete
Vehicles
vehicles-list,vehicles-create,vehicles-edit,vehicles-delete
Route-Vehicle Assignment
RouteVehicle-list,RouteVehicle-create,RouteVehicle-edit,RouteVehicle-delete
Driver & Helper
driver-helper-list,driver-helper-create,driver-helper-edit,driver-helper-delete
Transportation Fees
transportation-fees-list,transportation-fees-create,transportation-fees-edit,transportation-fees-delete
Transportation Expense
transportationexpense-list,transportationexpense-create,transportationexpense-edit,transportationexpense-delete
Transportation Requests
transportationRequests-list,transportationRequests-create,transportationRequests-edittransportationRequests-receipt- Download receipts
Communication & Announcementsβ
Announcements
announcement-list,announcement-create,announcement-edit,announcement-delete
Sliders (Homepage)
slider-list,slider-create,slider-edit,slider-delete
Notifications
notification-list,notification-create,notification-edit,notification-delete
Gallery
gallery-list,gallery-create,gallery-edit,gallery-delete
System Settingsβ
School Settings
school-setting-manage- Manage school-wide settings
System Settings
system-setting-manage- Manage system configuration
App Settings
app-settings- Configure mobile app settings
FCM (Push Notifications)
fcm-setting-create,fcm-setting-manage- Configure Firebase Cloud Messaging
Email Settings
email-setting-create- Configure SMTP/email
Payment Settings
payment-settings- Configure payment gateways
Web Settings
web-settings,school-web-settings- Configure website
ID Card Settings
id-card-settings- Configure ID card templates
Email Templates
email-template- Manage email templates
Database Backup
database-backup- Create/download backups
Content Managementβ
Holidays
holiday-list,holiday-create,holiday-edit,holiday-delete
Languages
language-list,language-create,language-edit,language-delete
Form Fields (Custom Fields)
form-fields-list,form-fields-create,form-fields-edit,form-fields-delete
Guidance
guidance-list,guidance-create,guidance-edit,guidance-delete
FAQs
faqs-list,faqs-create,faqs-edit,faqs-delete
Certificates
certificate-list,certificate-create,certificate-edit,certificate-delete
Contact Inquiries
contact-inquiry-list- View contact form submissions
Reportsβ
Student Reports
reports-student- Generate student-related reports
Teacher Reports
reports-teacher- Generate teacher-related reports
Exam Reports
reports-exam- Generate exam/result reports
Expense Reports
reports-expense- Generate financial expense reports
Static Pagesβ
Privacy Policy
privacy-policy- Manage privacy policy page
Terms & Conditions
terms-condition- Manage terms page
School Terms & Conditions
school-terms-condition- School-specific terms
About Us
about-us- Manage about page
Contact Us
contact-us- Manage contact page
Subscription Management (SaaS)β
Subscription View
subscription-view- View subscription details
Subscription Settings
subscription-settings- Manage subscription plans
Subscription Bills
subscription-change-bills- Modify subscription billing
Bill Payment
subscription-bill-payment- Process subscription payments
Schools (Super Admin Only)
schools-list,schools-create,schools-edit,schools-delete
Packages (Super Admin Only)
package-list,package-create,package-edit,package-delete
Addons (Super Admin Only)
addons-list,addons-create,addons-edit,addons-delete
π Managing Roles & Permissionsβ
Assigning Roles to Usersβ
During User Creation:
- When adding a new staff member or teacher
- In the user form, select Role from dropdown
- Save the user
For Existing Users:
- Go to Staff β Staff List (or Staff β Teachers)
- Click Edit on the user
- Change the Role dropdown
- Click Save
Multiple Roles:
- Some systems allow assigning multiple roles to one user
- The user gets the combined permissions of all roles
- Use sparingly to avoid confusion
Editing Role Permissionsβ
Step 1: Access Roles
- Go to Settings β Roles & Permissions
- View list of all roles
Step 2: Edit Role
- Click Edit (pencil icon) on the role
- Or click View then Edit Permissions
Step 3: Modify Permissions
- Check/uncheck permission boxes
- Permissions are grouped by module for easier navigation
- Click Save or Update
What Happens:
- All users with that role immediately get the updated permissions
- They may need to log out and back in to see changes
- Changes take effect system-wide
You cannot edit permissions for School Admin, Teacher, Guardian, or Student roles. These are system-protected. Create a custom role instead.
Deleting Custom Rolesβ
Step 1: Check Usage
- Before deleting, ensure no users are assigned to this role
- Or reassign users to a different role first
Step 2: Delete
- In the roles list, click Delete (trash icon)
- Confirm the deletion
What Happens:
- The role is removed from the system
- If any users had this role, they lose those permissions
- Cannot delete reserved roles (School Admin, Teacher, etc.)
π‘οΈ Security Best Practicesβ
Principle of Least Privilegeβ
Grant only necessary permissions:
- β
Front desk staff:
student-create,guardian-create,contact-inquiry-list - β
Accountant:
fees-paid,expense-create,reports-expense - β Don't give everyone
student-deleteorexam-result-edit
Why this matters:
- Reduces risk of accidental data loss
- Limits damage from compromised accounts
- Maintains data integrity
Example:
Bad:
Role: Front Desk Staff
Permissions: student-list, student-create, student-edit, student-delete,
fees-paid, exam-result-edit, staff-create
Good:
Role: Front Desk Staff
Permissions: student-list, student-create, guardian-create,
contact-inquiry-list, holiday-list
Regular Permission Auditsβ
Monthly Review:
- Go to Settings β Roles & Permissions
- Review each custom role
- Ask: "Does this role still need these permissions?"
- Remove unnecessary permissions
- Document changes
When staff change positions:
- Immediately update their role
- Don't leave old permissions "just in case"
Checklist:
- β Review roles every 3-6 months
- β Remove permissions after staff leave
- β Verify new staff have correct role
- β
Audit who has
deletepermissions
Protecting Sensitive Operationsβ
Require School Admin for:
- β Creating or deleting roles
- β Changing system settings
- β Accessing database backups
- β Managing payment gateway settings
- β Viewing all financial reports
Limit These Permissions:
student-delete,staff-delete- Very few users should have thisexam-result-edit- Only admin and head teacherfees-config- Only admin and accountantdatabase-backup- Only IT staff or adminpayment-settings- Only admin
Multi-Factor Authentication (MFA)β
Enable for:
- β All School Admin users
- β Accountants (handle money)
- β Anyone with delete permissions
- β System administrators
How to Enable:
- Go to user profile settings
- Enable Two-Factor Authentication
- Use app like Google Authenticator or Authy
Password Policiesβ
Enforce strong passwords:
- Minimum 8 characters
- Mix of letters, numbers, symbols
- Change every 90 days (for staff)
- No common passwords (123456, password, etc.)
Password Management:
student-reset-password- Allow admins/teachers to resetreset-password-list- Track who requested resets- Disable accounts of former staff immediately
Temporary Accessβ
For substitute teachers or temporary staff:
- Create their account with appropriate role
- Set an end date or reminder to disable
- When they leave, immediately:
- Change their password
- Or delete their account
- Or disable their login
Don't:
- β Share login credentials
- β Leave temp accounts active indefinitely
- β Give temp staff more permissions than needed
π Permission Matrix by Roleβ
Here's a quick reference showing typical permissions by role:
| Module | School Admin | Teacher | Accountant | Front Desk | Guardian | Student |
|---|---|---|---|---|---|---|
| Students | List, Create, Edit, Delete | List (own classes) | List | Create, List | View own child | View self |
| Attendance | List | List, Create | List | β | View child | View self |
| Assignments | All | Create, Edit, Grade | β | β | View child | Submit |
| Exams | All | Create, Upload Marks | β | β | View child results | Take, View results |
| Fees | All | β | List, Paid, Config | β | Pay, View | View |
| Expenses | All | β | Create, List, Edit | β | β | β |
| Reports | All | Own classes | Financial | β | Child reports | Own reports |
| Settings | All | β | β | β | β | β |
| Announcements | Create, Edit, Delete | List | β | β | View | View |
| Roles | Manage | β | β | β | β | β |
Legend:
- All - Full CRUD (Create, Read, Update, Delete)
- List - View only
- β - No access
Troubleshootingβ
"Permission Denied" Errorβ
Problem: User gets "You do not have permission" message
Solutions:
- Check user's role:
- Go to Staff β Staff List β Edit user
- Verify role assignment
- Check role permissions:
- Go to Settings β Roles & Permissions
- View the role, check if required permission is enabled
- Permission name:
- Ensure exact permission is granted (e.g.,
student-listnotstudents-list)
- Ensure exact permission is granted (e.g.,
- Session refresh:
- Have user log out and back in
- Permissions may be cached
User Can't See Expected Featureβ
Problem: Menu item or feature not visible
Causes:
- Module disabled:
- Check if feature module is enabled for your school
- Contact support if feature missing
- No permission:
- User role lacks the required
*-listpermission
- User role lacks the required
- Feature access:
- Some features require subscription/package upgrade
Solution:
- Grant the required permission to user's role
- Or assign a different role that has access
Changes Don't Take Effectβ
Problem: Permissions updated but user still can't access
Solutions:
- Clear cache:
- User should log out completely
- Close browser
- Log back in
- Check permission spelling:
- Must match exactly:
attendance-listnotAttendance-List
- Must match exactly:
- Role assignment:
- Verify user actually has the edited role assigned
Can't Delete Roleβ
Problem: "Role in use" or cannot delete
Solution:
- Check if any users have this role assigned
- Reassign those users to a different role first
- Then try deleting again
- System roles (School Admin, Teacher, etc.) cannot be deleted
Too Many Permissionsβ
Problem: Role has too many permissions, hard to manage
Solution:
- Split into multiple roles:
- E.g., "Accountant - Fees" and "Accountant - Expenses"
- Remove unused permissions:
- Audit and clean up
- Use default roles when possible:
- Don't recreate Teacher role as "My Teacher"
Related Featuresβ
- Teacher-Subject Assignment - Assign teachers to classes (controls what teachers can access)
- Data Import/Export - Required permissions for import/export
- School Admin Guide - Full admin capabilities
- Expense Management - Permission details for expense features
Summary Checklistβ
When Setting Up School:
- β Review default roles (School Admin, Teacher, Guardian, Student)
- β Create custom roles for specific positions (Accountant, Front Desk, etc.)
- β Assign roles to all staff members
- β Test that users can access what they need
- β Verify users cannot access what they shouldn't
Monthly Maintenance: