将权限附加到 Laravel 5 中的角色

Attaching Permissions to Role in Laravel 5

我使用 romanbican/roles 包来管理我的 roles/permissions。现在,我有一个特定的角色(例如 admin),它具有 create_useredit_userdelete_user 的权限。我为此使用了复选框,所以如果我 unchecked 一个权限(例如 delete_user),这个权限将是来自 admin 角色的 detached。这是我使用的包 link https://github.com/romanbican/roles。那里有一个方法叫做 attachRole()attachPermissiondetachRoledetachPermission。需要你们的帮助,我已经 2 天 了,所以我想是时候问问了:)

我不太完全理解你的问题,但看起来你有一个可以使用复选框为用户分配权限的界面。这是执行此操作的一种方法。

$admin = User::find(1);

$admin->detachAllPermissions();

$permission = $request->get('permissions');

// loop through all checked permission passed from view
// we are assuming $permissions array to be an array of slug of permissions

foreach($permissions as $permission_slug){

    //get the permission object by slug
    $permission = Bican\Roles\Models\Permission::where('slug', $permission)->get();

    //attach to admin 
    $admin->attachPermission($permission);
}

这里是解释。

  1. 获取我们要修改权限的用户对象。在您的情况下,它是管理员。我刚刚对其进行了硬编码,但您可以根据需要进行更改。
  2. 取消该用户的所有权限
  3. 遍历从表单传递的所有权限段,从数据库中获取权限对象并将其分配给用户。

注意:请注意,我没有测试过这段代码,这更多是根据您使用的插件提供的功能为您设计的算法。

插件也有 $user->detachPermission($permission) 方法,它接受单一权限并在附加时将其与用户分离。