Laravel-ACL 权限相关操作

创建权限

$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();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容