过滤查询是否在doctrine中授予安全访问权限/从knp paginator中删除实体

时间:2014-06-18 09:41:55

标签: security symfony doctrine-orm pagination knppaginator

我正在使用symfony2,doctrine,knp paginator和安全选民。 在我的应用程序中,每个用户都有一些孩子。我应该显示属于当前用户的子列表(由当前登录用户定义)。

所以我创建了一个安全选民,只允许用户访问自己的孩子。它完全适用于那种情况:

if ($this->get('security.context')->isGranted('view', $child))

{% for entity in pagination if app.security.isGranted('view', child) %}

您可以想象,paginator无法正常工作,因为我只是不在当前页面显示子项。因此,我的分页器变成了垃圾。

我看到两种可能的解决方案:

  • 在查询阶段过滤实体。问题是如何在doctrine querybuilder中使用 isGranted
  • 使用paginator做一些事情,消除不适当的孩子

我意识到我可以修改我的查询,添加类似 - > andWhere('c.parent ==:user')的内容,但这个listig工具非常通用,用于列出dosens不同的关系,如用户子用户组 - 城镇订单用户 - 后标签用户电影

感谢您的考虑

0 个答案:

没有答案