spatie роли в laravel


https://github.com/spatie/laravel-permission

 

In Laravel 5.5 the service provider will automatically get registered. In older versions of the framework just add the service provider in config/app.php file:

'providers' => [
    // ...
    Spatie\Permission\PermissionServiceProvider::class,
];

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
<?
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

$role = Role::create(['name' => 'writer']);
$permission = Permission::create(['name' => 'edit articles']);


# назначить роли права
$role->givePermissionTo($permission);
$permission->assignRole($role);

# назначить несколько ролей и прав
$role->syncPermissions($permissions);
$permission->syncRoles($roles);

# удалить права из роли (на пхп 7.2 не работает используй syncPermissions)
$role->revokePermissionTo($permission);
$permission->removeRole($role);

# получить права пользователя
$permissions = $user->permissions;
$permissions = $user->getAllPermissions();

# получить роли пользователя 
$roles = $user->getRoleNames(); // Returns a collection
$user->hasPermissionTo('edit articles');