gpt4 book ai didi

api-platform.com - 如何在 api 平台中删除 "validate"请求

转载 作者:行者123 更新时间:2023-12-05 07:20:38 25 4
gpt4 key购买 nike

我想检查实体变量并检查是否允许删除实体。例如,如果关联的所有者实体链接到另一个实体,我想让删除变得不可能。

我查看了 api-platform 的文档,但找不到有关我的问题的任何帮助。您是否授予删除权。我找不到如何控制它(相当于对 POST、PUT 和 PATCH 的验证)。

最佳答案

您可以使用 Api-Platform 和 Symfony Expression Language 的访问控制功能来实现您想要的。这样您就可以编写非常复杂的表达式。

我希望这个例子能说明问题。user 是当前登录的用户。object 是用户试图删除的资源。

/**
* @ApiResource(
* itemOperations={
* "delete"={
* "access_control"="is_granted('ROLE_USER') and object.getUsers().contains(user),
* }
* }
* )
*/

class Entity
{
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="User", inversedBy="entities")
* @ORM\JoinTable(name="entity_users")
*/
private $users;

/**
* @return ArrayCollection
*/
public function getUsers(): ArrayCollection
{
return $this->users;
}
}

在这种情况下,只有存储在用户实体数组中的用户才能删除此资源。

关于api-platform.com - 如何在 api 平台中删除 "validate"请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57435954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com