abdul/laravel-role-permission
Laravel package for simple role-based access control. Generates permissions from your routes, lets you assign them to roles via an admin panel, and protects routes with the auth.role middleware. Includes migrations and an artisan command to register permissions.
Auth::user()). It extends Laravel’s native permission system by allowing dynamic route-level permissions via a backend configuration (e.g., database or admin panel).Route::middleware(['auth', 'permission'])->group(...)).Gate, Policy, Middleware).users, roles, and permissions table structure. Custom schemas may require minor adjustments.role_permissions pivot table), enabling dynamic updates via admin panels or APIs without code redeployment.Gate::allows() or middleware caching). Requires benchmarking for high-traffic routes.Policy classes)?Gate or middleware?users table)?Gate/Policy system or packages like spatie/laravel-permission suffice with less overhead?if (Auth::user()->role === 'admin') or custom middleware).editors can access /posts/create").composer require abdul/laravel-role-permission.php artisan vendor:publish --provider="Abdul\RolePermission\RolePermissionServiceProvider".roles, permissions, and pivot tables.RolePermission::attachPermissionToRole($roleId, $permissionId)).Route::middleware(['auth', 'permission:edit-post'])->group(function () {
Route::post('/posts', [PostController::class, 'store']);
});
Policy.actingAs() and assertForbidden()/assertAuthorized().auth middleware in the pipeline.Policy classes, but avoid duplicate logic (e.g., don’t define PostPolicy and a redundant route permission).spatie/laravel-permission). Choose one system to avoid table/column clashes.Gate::before() or Redis).php artisan cache:clear or event listeners).role_permission, permission_role).php artisan route:list).dd(Auth::user()->roles)).vendor/abdul/laravel-role-permission).Auth::user()->load('roles.permissions').Gate::before() or Redis (e.g., user:{id}:permissions).roles/permissions tables to avoid single points of failure.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Database connection loss | Permission checks fail silently. | Fallback to cached permissions or default-deny policies. |
| Corrupted pivot tables | Users lose permissions. | Regular database backups; repair scripts for orphaned records. |
How can I help you explore Laravel packages today?