Laravel spatie permissions and roles

Direct Permissions

composer show spatie/laravel-permission

A permission can be given to any user:

$user->givePermissionTo('edit articles');

// You can also give multiple permission at once
$user->givePermissionTo('edit articles', 'delete articles');

// You may also pass an array
$user->givePermissionTo(['edit articles', 'delete articles']);

A permission can be revoked from a user:

$user->revokePermissionTo('edit articles');

Or revoke & add new permissions in one go:

$user->syncPermissions(['edit articles', 'delete articles']);

You can check if a user has a permission:

$user->hasPermissionTo('edit articles');

Or you may pass an integer representing the permission id

$user->hasPermissionTo('1');
$user->hasPermissionTo(Permission::find(1)->id);
$user->hasPermissionTo($somePermission->id);

You can check if a user has Any of an array of permissions:

$user->hasAnyPermission(['edit articles', 'publish articles', 'unpublish articles']);

…or if a user has All of an array of permissions:

$user->hasAllPermissions(['edit articles', 'publish articles', 'unpublish articles']);

You may also pass integers to lookup by permission id

$user->hasAnyPermission(['edit articles', 1, 5]);

Saved permissions will be registered with the Illuminate\Auth\Access\Gate class for the default guard. So you can check if a user has a permission with Laravel’s default can function:

$user->can('edit articles');


Leave a Reply