创建权限
$permission = new Permission();
$permUser = $permission->create([
'name' => 'user',
'slug' => [ // 传入权限数组
'create' => true,
'view' => true,
'update' => true,
'delete' => true,
'view.phone' => true
],
'description' => 'manage user permissions'
]);
$permission = new Permission();
$permPost = $permission->create([
'name' => 'post',
'slug' => [ // 传入权限数组
'create' => true,
'view' => true,
'update' => true,
'delete' => true,
],
'description' => 'manage post permissions'
]);
给角色分配权限
提醒: 你可以传入对象、数组、permission->id 或者只传入 name。
$roleAdmin = Role::first(); // administrator
// 传入对象
$roleAdmin->assignPermission($permUser);
// 传入 id
$roleAdmin->assignPermission($permUser->id);
// 传入 name
$roleAdmin->assignPermission('user');
// 传入集合
$roleAdmin->assignPermission(Permission::all());
一次传入多个权限:
// 数组形式的多个权限
$roleAdmin->assignPermission(array($permUser, $permPost->id));
// 以逗号分隔的多个角色 slugs
$roleAdmin->assignPermission('user, post');
提醒: 如果权限不存在,系统会抛出异常。
为角色移除权限
提醒: 你可以传入对象、数组、permission->id 或者只传入 name。
$roleAdmin = Role::first(); // administrator
// 传入对象
$roleAdmin->revokePermission($permUser);
// 传入 id
$roleAdmin->revokePermission($permUser->id);
// 传入 name
$roleAdmin->revokePermission('user');
// 传入集合
$roleAdmin->revokePermission(Permission::all());
一次传入多个权限:
// 数组形式的多个权限
$roleAdmin->assignPermission(array($permUser, $permPost->id));
// 以逗号分隔的多个角色 slugs
$roleAdmin->assignPermission('user, post');
提醒: 如果权限不存在,系统会抛出异常。
同步角色权限
你可以传入权限对象数组、ids 或者 slugs 来同步权限给角色(参数中新的权限会插入到中间表,参数中没有的权限会从中间表移除)。
$roleAdmin->syncPermissions([1,2,3]);
$roleAdmin->syncPermissions('user, post');
$roleAdmin->syncPermissions((array($permUser, $permPost));
// 传入集合
$roleAdmin->syncPermissions(Permission::all());
提醒: 如果权限不存在,系统会抛出异常。
撤销角色的所有权限
$roleAdmin->revokeAllPermissions();
获取角色的所有权限
$roleAdmin->getPermissions();