← ClaudeAtlas

laravel-rbac-permissionslisted

Implements module-based RBAC in Laravel admin apps with permission middleware, user_permissions table, super_admin bypass, and route groups. Use when adding role-based access, gating routes by module read/write, or staff vs portal users.
Yaz-inc/yazinc-ai-toolkit · ★ 0 · AI & Automation · score 60
Install: claude install-skill Yaz-inc/yazinc-ai-toolkit
# Laravel RBAC Permissions Module-level access control: **`permission:module,read`** / **`permission:module,write`** on routes, backed by `user_permissions` rows per user. ## When to use - Admin app with multiple modules and staff roles - Need read vs write separation (view list vs create/edit/delete) - Super admin bypass; optional separate portal/customer user type blocked from admin ## Stack - Laravel 10, session auth - Middleware: `CheckPermission`, `SuperAdminOnly` - Model: `UserPermission` + `User::hasPermission()` ## Roles (simple enum on users.role) | Role | Behavior | |------|----------| | `super_admin` | Passes all permission checks | | `manager` | Module permissions from DB | | `data_view_only` | Read-only via permissions | Adjust role names per project. ## Database ```php Schema::create('user_permissions', function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->constrained()->cascadeOnDelete(); $table->string('module', 50); $table->boolean('can_read')->default(false); $table->boolean('can_write')->default(false); $table->boolean('can_view')->default(false); $table->boolean('can_access')->default(false); // for report-only modules $table->timestamps(); $table->unique(['user_id', 'module']); }); ``` Define module slugs in `UserPermission::getModules()` — use kebab/snake slugs matching routes. ## Register middleware ```php // app/Http/Kernel.php 'permission' => \App\Http\Middleware\CheckPermission::cla