The system uses the Role-Based Access Control (RBAC) model to manage user permissions. Roles are created, removed, assigned, and modified with different permissions live. Changes will reflect within the application the next time the application is launched for the assigned user without needing to modify the codebase directly.
ReceptionistManagerDirectorThe following permissions can be assigned to roles:
| Permission Name | Description |
|---|---|
checkin.perform |
Perform customer check-in workflow |
checkout.perform |
Perform customer check-out workflow |
shuttle.perform |
Perform shuttle operations |
shuttle.checkin |
Check-In Shuttle Seats |
booking.notes.modify |
Modify booking notes |
booking.notes.view |
View booking notes |
booking.flags.modify |
Modify booking flags |
booking.flags.view |
View flags |
booking.override |
Override booking states |
repair.create |
Create a repair record |
repair.view |
View repair records |
repair.notes.modify |
Modify repair notes |
repair.notes.view |
View Repair Notes |
repair.status.modify |
Modify repair status |
repair.assigned.modify |
Assign repair records to other users |
repair.delete |
Delete a repair record |
customer.view_full |
View full customer information (First Name, Last Name, Waiver Names, Waiver Count, Phone Number, startTime, endTime, Float Time, BookingDateTime, Status, Rentals) |
customer.view_limited |
View limited customer information (Last Name, Waiver Count, BookingDateTime, Status, Rentals) |
customer.view_checked_by |
View who checked in and checked out a customer |
manualinput.perform |
Perform manual input lookups |
qr.perform |
Scan QR codes |
reports.view |
Access reports |
repair.user.view |
View which users create/resolve repair records |
repair.update |
Update repair records |
shuttle.reports |
View reports in Shuttle Management module |
reports.floattime.view |
View advanced floattime information within the reporting module. Requires additional API call to calculate |
reports.history.view |
Access to view report history |
The following table maps roles to permissions:
Subject to frequent modifications. List may not be up to date, check backend role values for more information.
| Permission | Receptionist | Manager | Director |
|---|---|---|---|
checkin.perform |
✅ | ✅ | ✅ |
checkout.perform |
✅ | ✅ | ✅ |
shuttle.perform |
✅ | ✅ | ✅ |
booking.notes.modify |
✅ | ❌ | ✅ |
booking.notes.view |
✅ | ✅ | ✅ |
booking.flags.modify |
✅ | ❌ | ✅ |
booking.flags.view |
✅ | ✅ | ✅ |
booking.override |
✅ | ❌ | ✅ |
repair.create |
❌ | ❌ | ✅ |
repair.view |
❌ | ❌ | ✅ |
repair.notes.modify |
❌ | ❌ | ✅ |
repair.notes.view |
❌ | ❌ | ✅ |
repair.status.modify |
❌ | ❌ | ✅ |
repair.assigned.modify |
❌ | ❌ | ✅ |
repair.assignable |
❌ | ❌ | ✅ |
repair.delete |
❌ | ❌ | ✅ |
customer.view_full |
✅ | ❌ | ✅ |
customer.view_limited |
✅ | ✅ | ✅ |
customer.view_checked_by |
❌ | ❌ | ✅ |
manual_input.perform |
✅ | ✅ | ✅ |
qr.scan |
✅ | ✅ | ✅ |
reports.view |
❌ | ❌ | ✅ |
repair.user.view |
❌ | ❌ | ✅ |
repair.update |
❌ | ❌ | ✅ |
shuttle.reports |
❌ | ❌ | ✅ |
reports.floattime.view |
❌ | ❌ | ✅ |
reports.history.view |
❌ | ❌ | ✅ |
shuttle.checkin |
✅ | ✅ | ✅ |
To improve performance and reduce the need for API calls, a ViewModel is employed to manage user permissions locally. This viewmodel loads the currently authenticated user’s active permissions at application launch and checks against a cached list of user permissions while the application remains active. This means that if a users permissions/roles are updated while they are using the application, they may need to restart the application before the new permissions can take effect.