将权限附加到 Laravel 5 中的角色
Attaching Permissions to Role in Laravel 5
我使用 romanbican/roles 包来管理我的 roles/permissions
。现在,我有一个特定的角色(例如 admin
),它具有 create_user
、edit_user
、delete_user
的权限。我为此使用了复选框,所以如果我 unchecked
一个权限(例如 delete_user
),这个权限将是来自 admin
角色的 detached
。这是我使用的包 link https://github.com/romanbican/roles。那里有一个方法叫做 attachRole()
或 attachPermission
和 detachRole
或 detachPermission
。需要你们的帮助,我已经 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);
}
这里是解释。
- 获取我们要修改权限的用户对象。在您的情况下,它是管理员。我刚刚对其进行了硬编码,但您可以根据需要进行更改。
- 取消该用户的所有权限
- 遍历从表单传递的所有权限段,从数据库中获取权限对象并将其分配给用户。
注意:请注意,我没有测试过这段代码,这更多是根据您使用的插件提供的功能为您设计的算法。
插件也有 $user->detachPermission($permission)
方法,它接受单一权限并在附加时将其与用户分离。
我使用 romanbican/roles 包来管理我的 roles/permissions
。现在,我有一个特定的角色(例如 admin
),它具有 create_user
、edit_user
、delete_user
的权限。我为此使用了复选框,所以如果我 unchecked
一个权限(例如 delete_user
),这个权限将是来自 admin
角色的 detached
。这是我使用的包 link https://github.com/romanbican/roles。那里有一个方法叫做 attachRole()
或 attachPermission
和 detachRole
或 detachPermission
。需要你们的帮助,我已经 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);
}
这里是解释。
- 获取我们要修改权限的用户对象。在您的情况下,它是管理员。我刚刚对其进行了硬编码,但您可以根据需要进行更改。
- 取消该用户的所有权限
- 遍历从表单传递的所有权限段,从数据库中获取权限对象并将其分配给用户。
注意:请注意,我没有测试过这段代码,这更多是根据您使用的插件提供的功能为您设计的算法。
插件也有 $user->detachPermission($permission)
方法,它接受单一权限并在附加时将其与用户分离。