首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为管理人员和管理人员分流SonataAdminBundle

如何为管理人员和管理人员分流SonataAdminBundle
EN

Stack Overflow用户
提问于 2017-03-05 07:45:16
回答 1查看 35关注 0票数 0

我想知道基本的概念指南。

我现在是由SonataAdminBundle管理实体,并且已经习惯了它。我要向前迈进一步。

我想让管理员和用户通过sonataadminbundle编辑实体。

,例如

我有这样的桌子/实体。

代码语言:javascript
复制
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是个坏主意??

我想让用户熊只看到相关的表。

代码语言:javascript
复制
Id |User  | data
1  |bear  | sarmon
4  |bear  | peanuts

起初,我在与public function configureListFields(ListMapper $listMapper)做斗争,但是这段代码只被调用了一次。我找不到正确的答案。

所以我想我需要把这类代码放在别的地方。

代码语言:javascript
复制
if ($user == bear){
array_push($table,$line);
}
else {
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-06 14:27:02

同时对用户和特权用户使用AdminBundle是完全可以的。您可以很容易地询问管理员,当前登录用户是否已被授予编辑行1或4的权限。

例如,您可以使用:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42605825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档