【发布时间】:2020-11-10 14:59:35
【问题描述】:
我有一个作用域,它根据用户角色以一种限制方式运行,您可以将一组规则转发到限制数据库最终输出的作用域。
一个真正简化的角色限制示例:
{
"first_name": "=foo%"
}
将只返回first_name 以foo% 开头的记录,这实际上意味着我已禁止具有该角色的用户查看任何不以foo% 开头的记录。
这种方法的问题是,如果某人没有施加任何限制,他就会看到一切。我知道这是一个有效的假设,但如果没有施加任何限制,我想禁止一切,这样如果创建了新角色,它就没有任何权利。
目前我正在为这种情况抛出异常:
public function apply(Builder $builder, Model $model)
{
$input = $this->getAuthValues(get_class($model));
if (count($input) < 1) {
throw new \Exception('No rights for you');
}
$jsonQuery = new JsonQuery($builder, $input); <-- class responsible for assembling the queries based on the input
$jsonQuery->search();
}
但这当然也不例外。在这种情况下,我希望返回空数组。
我可以使用某种方法优雅地退出范围以及一个空结果,而不是在之后实际执行查询吗?
【问题讨论】:
标签: php laravel authorization laravel-7 scopes