我想知道基本的想法指南。
我现在正在通过SonataAdminBundle管理实体并习惯它。 我想向前迈进一步。
我想让管理员和用户通过sonataadminbundle
编辑实体[例如]
我有这样的表/实体。
Id |User | data
1 |bear | sarmon
2 |dog | meat
3 |monkey| banana
4 |bear | peanuts
5 |dog | corn
当然我(管理员)可以从SonataAdminBundle的admin_dashboard编辑实体。
但是我想让用户承担'只编辑1行和4行。
如果我在Controller中从头开始编辑/更新/列表脚本。 这很容易实现。
然而,我认为这就像无用的工作,因为SonataAdminBundle的UI比我从头开始做的更好。
那么,有没有人知道这种想法的适当方式? 或者将SonataAdminBundle用于用户和管理员
是不明智的我希望让用户看到只有熊相关的表格。
Id |User | data
1 |bear | sarmon
4 |bear | peanuts
起初我正在努力
public function configureListFields(ListMapper $listMapper)
但是这段代码只被调用一次。
我无法找到正确的答案。
所以我想我需要把这种代码放在其他地方。
if ($user == bear){
array_push($table,$line);
}
else {
}
答案 0 :(得分:1)
对于用户和特权用户同时使用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