【发布时间】:2019-10-03 14:46:42
【问题描述】:
我有以下政策来确定用户是否能够查看合同。
public function view(User $user, Contract $contract)
{
if ($user->user_type->id == 2) { // If user is a vecino
if ($user->id == $contract->customer_id) {
return true;
}
} else if ($user->user_type->is_admin == true) { // If user is an admin
return true;
}
return false;
}
然后检查授权
$this->authorize('view', $contract);
如何检查列表/数组/集合的授权?就像我通过 Contract::all() 获得一份合同清单一样
我还没有找到任何方法来做到这一点。我可以做一个循环并为每次迭代调用 $this->authorize 来检查授权,但这可能会影响性能。
有更好的方法吗?
【问题讨论】:
-
您如何确定用户是否可以查看合同?有关系吗?
-
如果是普通用户,合约里面必须要有用户的id。至于管理员,它应该总是被允许的。它已经显示在我上面的代码中,它检查用户 ID 是否等于合同的客户 ID。
-
你有没有想过这个问题和/或我的回答有帮助吗?
标签: laravel permissions authorization roles laravel-passport