chrisrhymes/policy-collect

Laravel Collection 方法,用于检查一组模型是否与策略相匹配

v0.2 2022-02-26 13:22 UTC

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