composer require spatie/laravel-permission
Optional: The service provider will automatically get registered. Or you may manually add the service provider in your config/app.php file
'providers' => [
// ...
Spatie\Permission\PermissionServiceProvider::class,
];
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
it will create config and database migration
php artisan migrate:fresh
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
// ...
}
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
$role = Role::create(['name' => 'writer']);
$permission = Permission::create(['name' => 'edit articles']);
- give direct permission to user
- remove permission from user
- give multiple permissions
- check user has permissions
- assign role to user
- remove role from user
- sync roles
- check user has role
- give permission to role
- remove permission from role
- check role has permission
- via middleware
- via controller middleware
- via Gate
- via authorize
- via blade