我试图找出是否有一种简单的方法可以让所有具有给定权限的用户。所以我通过角色使用权限,这意味着我与它们没有直接关系,所以我需要检查用户模型“角色”的关系,然后检查与每个用户角色关联的权限。
带数据集的SqlFiddle - http://sqlfiddle.com/#!9/2fe35d
例如,任务是获取具有id 2和3权限的用户。
发布于 2021-01-27 17:26:00
空间权限包使用Laravel本机授权功能,这意味着您可以访问授权文档中定义的许多特性。
这些特性之一是can()指令。您可以将权限的名称传递给can(),它将根据检查返回true或false。例如:
@can('view posts')
if (auth()->user()->can('view posts') { }
if ($user->can('view posts') { }使用您的示例,如果您想找到所有具有users权限的的:
// Get the name of your permissions
$permissions = Permission::whereIn('id', [2,3])->pluck('name')->toArray();
// Filter users based on if they have any of the permissions
$users = User::all()
    ->filter(function ($user) use ($permissions) {
        if ($user->can($permissions)) {
            return $user;
        }
        return false;
    });或者,如果users必须拥有all,则权限:
// Filter users based on if they have all of the permissions
$users = User::all()
    ->filter(function ($user) use ($permissions) {
        foreach ($permissions as $permission) {
            if (!$user->can($permission)) {
                return false;
            }
        }
        return $user;
    });查看空间网站上的通过角色使用权限文档。
https://stackoverflow.com/questions/65921798
复制相似问题