chrisrhymes / policy-collect
Laravel Collection 方法,用于检查一组模型是否与策略相匹配
v0.2
2022-02-26 13:22 UTC
Requires (Dev)
- laravel/legacy-factories: ^1.3
- orchestra/testbench: ^5.0|^6.0|^7.0
- phpunit/phpunit: ^9.4
This package is auto-updated.
Last update: 2024-09-26 18:37:47 UTC
README
想象一下,你有一组模型通过ajax调用返回,这意味着你无法访问@can
blade助手来查看用户是否有权限查看、更新或删除每个模型。
此包提供了一种集合方法,它将遍历一组模型,并检查策略的标准资源方法,以返回登录用户是否可以执行操作。然后可以在JavaScript中使用此功能来决定显示或启用哪些按钮。
安装
composer require chrisrhymes/policy-collect
用法
例如,如果策略检查一个订单是否属于用户,他们是否有权限查看订单,并且第一个订单确实属于该用户,则可以执行以下操作:
$orders = Order::paginate()->policy(); echo $orders[0]->can->view; // true
资源方法
默认情况下,它将返回标准的策略方法
$orders[0]->can->view; $orders[0]->can->update; $orders[0]->can->delete; $orders[0]->can->restore; $orders[0]->can->forceDelete;
附加策略方法
策略集合方法还允许您传递一个数组,以在策略中检查这些自定义方法。
例如,如果您在订单策略中有一个退款方法来决定谁可以退款订单,只有管理员用户可以退款,则可以执行以下操作:
$orders = Order::paginate()->policy(['refund']); echo $orders[0]->can->refund; // false