Laravel-授权用户仅使用与用户属于同一组织的外键项更新资源

时间:2019-01-30 14:33:29

标签: laravel eloquent authorization laravel-authorization

我想在Laravel应用程序中授权资源,以便用户只能将外键ID更改为与用户属于同一组织的项目的值。

例如:

user属于organization => user.organization_id

organization有许多item对象=> item.organization_id

现在user要更新具有一些列和四个项目列item1item2item3item4的资源。

只允许user设置这4个项目之一,其ID为item,该ID属于他的组织。

我为此案例创建了一个包含该功能的控制器和策略

// Controller function
public function update(Request $request, ItemToUpdate $item)
    {
        //
    }

// Policy function
public function update(User $user, ItemToUpdate $item)
    {
        //return true;
    }

现在我的问题是:检查是否允许用户使用请求中发送的ID更新资源的性能最高的方法是什么。

我当然可以对每个项目都发出数据库请求,并检查是否item.organization_id === user.organization_id,但这真的是最高效,最有效的方法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我认为最好的方法是创建一个自定义Request并在authorize方法内部进行检查