savannabits/entrust
Savannabits/Entrust adds role-based access control to Laravel, letting you assign roles and permissions to users via Eloquent traits, middleware, and Blade directives for simple authorization checks.
Open item to resolve before committing: the release notes are one line. A major version bump (8.1.0 → 9.0.0) implies breaking changes that are not documented here — most plausibly the Laravel 11 removal of app/Http/Kernel.php (middleware alias registration moving to bootstrap/app.php), plus a dropped minimum PHP/Laravel floor. Treat the changelog as incomplete until verified against the diff.
Adopt when:
roles, permissions, role_user, permission_role) in production and want the smallest-diff path onto Laravel 10/11.@role / @permission / @ability Blade directives and role: / permission: middleware without writing them.Look elsewhere when:
spatie/laravel-permission is the de facto standard: direct user permissions, teams, wildcard permissions, permission caching, and a large active community.To executives: Entrust is our existing roles-and-permissions layer. It was effectively abandoned upstream years ago; this maintained fork has just shipped support for Laravel 10 and 11, which means we can stay on a supported framework version without an authorization rewrite this cycle. That's a real cost avoidance — a rewrite touches every gated route, screen, and permission check in the product. The recommendation is to take the upgrade as a bridge, and put a migration to the industry-standard package on next year's roadmap rather than this quarter's.
To engineering: treat v9.0.0 as breaking, not routine. Register a spike to: confirm the PHP/Laravel minimums, verify how middleware aliases are registered under Laravel 11's bootstrap/app.php, re-publish and diff config/migrations, and run the full authorization test suite against a pinned tag. The changelog is under-specified for a major release — do not merge on the version number alone. Also note this is a maintenance dependency, not a strategic one: it will not grow features, so avoid designing new capability on top of it. Any new work needing direct user permissions, teams, or cached permission checks should go through Spatie instead, and we should not run both.
Bottom line: adopt v9.0.0 to preserve framework currency for an existing Entrust codebase; do not adopt it for anything new.
How can I help you explore Laravel packages today?