0

我正在将 Laravel 5.3 与 Laravel Datatables 和 Entrust 一起使用

在我的索引操作中,我显示数据表中的记录列表。现在我需要将委托融入其中。如果用户是管理员,他们可以看到所有潜在客户。但是,如果用户是普通用户,则只能看到属于他们的记录。

我不知道如何处理这个问题,我是把这个查询放在 if 语句中检查角色还是有更好的方法?

public function query()
    {
        $leads = Lead::query()
            ->select([
                'leads.id as id',
                'leads.parent_id as parent_id',
                'statuses.name as status',
                'leads.title as title',
                'leads.first_name as first_name',
                'leads.last_name as last_name',
                'leads.opt_in as opt_in',
                'leads.created_at as created_at',
                'leads.user_id as user_id',
            ])
            ->leftJoin('statuses', 'leads.status_id', '=', 'statuses.id');

        return $this->applyScopes($leads);
    }
4

1 回答 1

0

太久我不使用 Entrust,因为 Laravel 有策略。但是在你的问题上,我看到 Entrust 有方法

Auth::user()->can('permission-name');

您必须创建权限并保存到通过运行命令创建的数据库中

php artisan entrust:migration

创建权限后,应用到用户,可能有管理员权限和普通用户权限

请阅读更多内容:https ://github.com/Zizaco/entrust 希望我能提供帮助。如果可以使用 Entrust,我们研究一下 Laravel 的 Policies,非常好。在https://mattstauffer.co/blog/acl-access-control-list-authorization-in-laravel-5-1#policies了解政策

于 2016-12-20T10:42:33.973 回答