在 Laravel 5 中为角色附加权限

Posted

技术标签:

【中文标题】在 Laravel 5 中为角色附加权限【英文标题】:Attaching Permissions to Role in Laravel 5 【发布时间】:2017-05-11 06:13:24 【问题描述】:

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

【问题讨论】:

【参考方案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);

这里是解释。

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

注意:请注意我没有测试过这段代码,这更像是一个基于你正在使用的插件提供的功能的算法。

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

【讨论】:

以上是关于在 Laravel 5 中为角色附加权限的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 和委托。如何同时保存用户和附加角色

laravel-如何在 5.1 中使用 zizaco 获得具有所有角色和所有权限的用户?

在 Vue JS 和 Laravel 5.1 + Entrust 中检查特定角色的权限

Laravel 5.3 Eloquent 关系 - 用户、角色、页面和权限

如何在 Laravel 中为嵌套关系设计表?

人员权限管理(RBAC)实现,附加源码