我正在与Sylius合作,并且一直在尝试创建一个仅允许编辑产品的用户角色。我已经给它以下权限:
未应用其他权限,也未选中任何父权限类别。我认为这些限制性权限会使该用户角色只能访问管理中的“产品”菜单,但它似乎还添加了“库存级别”菜单。这个用户角色应该绝对无法查看或编辑库存水平,那么它给出了什么?
这是Sylius权限的错误吗?权限是否未得到足够的扩展以允许这种精细的控制级别?或者是否认为库存水平是产品不可或缺的一部分,它始终包含在与产品相关的权限中,以便管理员可以确保他们编辑的产品实际可用?
我会接受删除库存权限的解决方案,以为我认为我会在代码中弄脏我这么做。我也会接受对这背后的想法的见解,或者这是否是Sylius的错误。谢谢!
答案 0 :(得分:1)
我在代码中找到了答案。该文件是:src / Sylius / Bundle / WebBundle / Menu / BackendMenuBuilder.php
这是在检查权限允许该用户查看后,将所有这些项放在管理菜单侧栏上的文件。这里有一大堆代码看起来像这样:
if ($this->rbacAuthorizationChecker->isGranted('sylius.product.index')) { // THIS IS IT!
$child->addChild('products', [
'route' => 'sylius_backend_product_index',
'labelAttributes' => ['icon' => 'glyphicon glyphicon-th-list'],
])->setLabel($this->translate(sprintf('sylius.backend.menu.%s.products', $section)));
$child->addChild('inventory', [
'route' => 'sylius_backend_inventory_index',
'labelAttributes' => ['icon' => 'glyphicon glyphicon-tasks'],
])->setLabel($this->translate(sprintf('sylius.backend.menu.%s.stockables', $section)));
}
这会添加产品菜单项,并根据相同的权限同时添加库存菜单项:'sylius.product.index'。我想这要么还没有被分成它自己的许可,或者只是认为在大多数情况下,能够管理产品的用户也应该能够管理库存。我将为此创建一个新的权限来解决我的问题。