【问题标题】:How to divert the SonataAdminBundle for both admin and manager如何为管理员和经理转移 SonataAdminBundle
【发布时间】:2017-03-05 07:45:16
【问题描述】:

我想知道基本的想法指南。

我现在正在通过 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 {
}

【问题讨论】:

    标签: php symfony sonata-admin symfony-sonata


    【解决方案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

    【讨论】:

    • 感谢您给我基本的想法和保证。我会一步一步实施!!
    • 我已阅读该文件。但这是我想做的一点点。我添加了文章。如果可能的话,你能提供一些帮助吗??
    • 谢谢你,我想我可以简化我的问题,我会再做一个线程。
    猜你喜欢
    • 2018-11-26
    • 2018-05-19
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多