Guides
Known Limitations and Roadmap
On this page
SystemRoles is under active development. This page lists what is not there yet, so you can plan around it.
Current limitations#
| Area | Limitation | Workaround |
|---|---|---|
| Enforcement | No permission middleware for your own routes ships with the package | Use the middleware recipes |
| Route access | No admin screen; no built-in route check helper | Sync with systemroles:sync, manage rows in code, use the RouteAccess recipe |
| Menus | No admin screens; menus/ does nothing |
Treat as experimental; render menus yourself |
| Roles | No delete from the UI | Retire the role, or delete in a transaction (see Roles) |
| Permissions | No delete from the UI; renaming one role's row doesn't rename it on other roles | Use the queries in Permissions |
| Users | One role per user | Combined roles |
user_ |
Not refreshed when the matrix changes | Use roleHas() for checks |
| Role assignment in code | updateUserRole() / createUserRole() don't write history |
Use the AssignRole service |
| Scans | Never remove rows for deleted controllers or routes | Clean up by hand |
| Session helpers | Session copies don't refresh | Prefer live checks |
| Translations | Screens are English only (role_ is eng) |
Publish and translate the views |
| Users screen | Expects users. and users. |
Publish and adapt the view |
Roadmap#
Planned or under consideration:
- A
permission:route middleware and a route access helper in the package. - Admin screens for routes and menus.
- Delete actions for roles and permissions, with safety checks.
- Renaming a permission across all roles in one step.
- Clean-up option for
systemroles:syncto remove stale routes and controllers. - Built-in caching of role permissions with automatic clearing.
- An
AssignRoleservice in the package that writes history and refreshes the snapshot. - Translations for the admin screens.
Suggestions and pull requests are welcome on GitHub: https://github.com/BabeRuka/systemroles