murtaza1904 / roles-permissions
A simple Laravel package to manage user roles and permissions with middleware and artisan commands.
Installs: 15
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/murtaza1904/roles-permissions
Requires
- php: ^8.1
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.5|^11.0
README
🔐 A simple and lightweight Laravel package for role & permission management.
Easily assign roles to users, attach permissions to roles, protect routes with middleware,
and use Blade directives like @role and @permission.
Features
- 🚀 Assign multiple roles to users
- 🎯 Attach permissions to roles or directly to users
- 🔒 Middleware for roles & permissions (
roleandpermission) - 🖥 Blade directives:
@role,@permission - ⚡ Lightweight & easy to integrate
- 🛠 Compatible with Laravel 10, 11, 12
Installation
Install via composer:
composer require murtaza1904/roles-permissions
Publish config & migrations:
php artisan vendor:publish --provider="Murtaza1904\RolesPermissions\RolesPermissionsServiceProvider"
php artisan migrate
Usage
Assigning Roles
use App\Models\User; use murtaza1904\RolesPermissions\Models\Role; $user = User::find(1); $role = Role::create(['name' => 'Editor']); $user->assignRole($role);
Assigning Permissions
use murtaza1904\RolesPermissions\Models\Permission; $permission = Permission::create(['name' => 'Edit Articles', 'slug' => 'edit-articles']); $role->permissions()->attach($permission->id);
Middleware
Protect routes with permissions and roles:
Route::middleware(['role:Admin'])->group(function () { Route::get('/admin', function () { return 'Welcome, Admin!'; }); }); Route::middleware(['permission:edit-articles'])->post('/articles', 'ArticleController@update');
Blade Directives
@role('Admin') <p>Welcome, Admin!</p> @endrole @permission(['edit-articles', 'delete-articles']) <button>Manage Articles</button> @endpermission
Seeder Example
You can seed default permissions like this:
use Illuminate\Database\Seeder; use murtaza1904\RolesPermissions\Models\Permission; class PermissionSeeder extends Seeder { public function run(): void { $permissions = [ ['name' => 'View Users', 'slug' => 'view-users'], ['name' => 'Edit Users', 'slug' => 'edit-users'], ]; foreach ($permissions as $permission) { Permission::firstOrCreate($permission); } } }
License
This package is open-sourced software licensed under the MIT license.