我想知道基本的概念指南。
我现在是由SonataAdminBundle管理实体,并且已经习惯了它。我要向前迈进一步。
我想让管理员和用户通过sonataadminbundle编辑实体。
,例如
我有这样的桌子/实体。
Id |User | data
1 |bear | sarmon
2 |dog | meat
3 |monkey| banana
4 |bear | peanuts
5 |dog | corn 当然,我(管理员)可以从admin_dashboard Of SonataAdminBundle编辑实体。
然而,我想让用户‘熊’只编辑1和4行。
如果我在Controller中从头开始编写编辑/更新/列表脚本。这很容易实现。
但是,我认为这是一种无用的工作,因为SonataAdminBundle的UI比我从零开始创建的UI更好。
那么,有没有人知道这种想法合适的方法呢?或者对用户和管理员都使用SonataAdminBundle是个坏主意??
我想让用户熊只看到相关的表。
Id |User | data
1 |bear | sarmon
4 |bear | peanuts起初,我在与public function configureListFields(ListMapper $listMapper)做斗争,但是这段代码只被调用了一次。我找不到正确的答案。
所以我想我需要把这类代码放在别的地方。
if ($user == bear){
array_push($table,$line);
}
else {
}发布于 2017-03-06 14:27:02
同时对用户和特权用户使用AdminBundle是完全可以的。您可以很容易地询问管理员,当前登录用户是否已被授予编辑行1或4的权限。
例如,您可以使用:
protected function configureFormFields(FormMapper $mapper)
{
/* either identify your custom rows here or via ACL/ROLES */
if (!$this->isGranted('EDIT')) {
// not allowed
}
}对于安全问题(并取决于您的用例),请注意,这不会阻止您的非特权用户显示/列出这些实体(因为上面的示例只覆盖表单/编辑掩码)。当然,您也可以在这些方法中添加逻辑。
根据安全性处理程序的不同,您可以使用symfony支持的所有内容(角色、ACL、.)。请看一下如何根据您的需要配置它:https://sonata-project.org/bundles/admin/3-x/doc/reference/security.html
https://stackoverflow.com/questions/42605825
复制相似问题