在 Laravel 5 中为角色附加权限
Posted
技术标签:
【中文标题】在 Laravel 5 中为角色附加权限【英文标题】:Attaching Permissions to Role in Laravel 5 【发布时间】:2017-05-11 06:13:24 【问题描述】:我使用 romanbican/roles 包来管理我的roles/permissions
。现在,我有一个特定的角色(例如admin
),它的权限为create_user
、edit_user
、delete_user
。我为此使用了复选框,所以如果我unchecked
一个权限(例如delete_user
),这个权限将是来自admin
角色的detached
。这是我使用的包的链接,https://github.com/romanbican/roles。有一种方法叫做attachRole()
或attachPermission
和detachRole
或detachPermission
。需要你们的帮助,我对此有 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.1 中使用 zizaco 获得具有所有角色和所有权限的用户?
在 Vue JS 和 Laravel 5.1 + Entrust 中检查特定角色的权限