首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spatie Laravel权限获得具有权限的用户

Spatie Laravel权限获得具有权限的用户
EN

Stack Overflow用户
提问于 2021-01-27 15:02:47
回答 4查看 2.9K关注 0票数 0

我试图找出是否有一种简单的方法可以让所有具有给定权限的用户。所以我通过角色使用权限,这意味着我与它们没有直接关系,所以我需要检查用户模型“角色”的关系,然后检查与每个用户角色关联的权限。

带数据集的SqlFiddle - http://sqlfiddle.com/#!9/2fe35d

例如,任务是获取具有id 2和3权限的用户。

EN

Stack Overflow用户

发布于 2021-01-27 17:26:00

空间权限包使用Laravel本机授权功能,这意味着您可以访问授权文档中定义的许多特性。

这些特性之一是can()指令。您可以将权限的名称传递给can(),它将根据检查返回truefalse。例如:

代码语言:javascript
复制
@can('view posts')

if (auth()->user()->can('view posts') { }

if ($user->can('view posts') { }

使用您的示例,如果您想找到所有具有users权限的的:

代码语言:javascript
复制
// 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,则权限:

代码语言:javascript
复制
// 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;
    });

查看空间网站上的通过角色使用权限文档。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65921798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档