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

时间:2017-05-11 06:13:24

标签: laravel permissions roles

我使用 romanbican / roles 包来管理我的roles/permissions。现在,我有一个具有权限admincreate_useredit_user的特定角色(例如delete_user)。我使用了复选框,因此,如果我unchecked获得了权限(例如delete_user),则此权限将来自detached角色admin。这是我使用的包https://github.com/romanbican/roles的链接。那里有一种称为attachRole()attachPermissiondetachRoledetachPermission的方法。需要你的帮助,我已经 2天关于这个,所以我觉得是时候问了:)

1 个答案:

答案 0 :(得分:1)

我并不完全理解您的问题,但看起来您有一个界面,可以使用复选框将权限分配给用户。这是一种方法。

$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. 遍历从表单传递的所有权限slugs,从数据库中获取权限对象并将其分配给用户。
  4. 注意:请注意我没有测试过这段代码,这是基于您正在使用的插件提供的功能的更多算法。

    插件还具有$user->detachPermission($permission)方法,该方法获得单一权限,并在附加时将其与用户分离。