问题描述
这是我先前的问题Security voter on relational entity field when not using custom subresource path
的后续活动现在的情况是,想象您在实体User
和Team
之间具有ManyToMany关系。
- 用户1 是雇员,并且是团队A 和团队B 的一部分
- 用户2 是团队A 和团队C 的团队负责人
- 用户2 可以更新配置文件字段(其中还包括 {strong>用户1 (或其他团队成员) 的
- 用户2 具有否权限,可以访问
read|update|delete
B团队,这意味着用户2 是否打开用户1 的个人资料,他无法在团队列表中看到 TEAM B
user.teams
)
这是为了获得read
权限而实现的。
问题
如果用户2 对用户A 发出了PUT
请求,其中请求数据user.teams
仅包含团队A 由于他无权查看 B团队,因此该API将从user.teams
中删除 B团队,因为请求数据不包含 B团队。
因此,基本上,当用户无权查看该团队时,我需要忽略/跳过user.teams
中的项目。
如果我按如下方式修改实体removeTeam
的方法User
,从理论上讲这很容易做到:
public function removeTeam(Team $team): self
{
if ($this->teams->contains($team) && $this->userService->canRemoveFromTeam($this,$team)) {
$this->teams->removeElement($team);
}
return $this;
}
但是我听说道德上禁止修改实体。
我遇到了PATCH
请求,这可能只是解决方案的一小部分,但是我对如何实现它尚不清楚,因为我没有找到关于该主题的任何有用信息,因为我希望在github上有一些功能请求
因此,如果有人可以帮助我以正确的方式做到这一点,请教我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)