【问题标题】:Putting Security around Sonatas Admin Extensions为 Sonatas Admin Extensions 设置安全性
【发布时间】:2016-12-31 08:14:53
【问题描述】:

我想在奏鸣曲管理中保存页面时添加“快速发布”功能 - 此功能需要锁定给某些具有正确“角色”或“权限”的个人。

我最初尝试更改基本模板以添加表单按钮并在 PageAdmin postUpdate/postPersist 函数中完成所有操作,但觉得这有点太混乱了。

我现在已经研究过使用 AdminExtension - 这样做意味着从表单中删除按钮,因为我真的不想为这一更改覆盖模板。为此,我添加了一个 configureFormFields 函数:

public function configureFormFields(FormMapper $formMapper)
{
    $formMapper->with('Options')
        ->add('quickPublish', 'checkbox', [
            'label' => 'Quick Publish',
            'required' => false,
            'help' => 'Checking this will automatically publish the changes'
        ])
        ->end();

}

然后我在这里添加了我的 postPersist 和 postUpdate 函数,它们将进行必要的更新。

public function postPersist(AdminInterface $admin, $object)
{
    if ($object->getQuickPublish()) {
        $this->quickPublish($object);
    }
}

我面临的问题是我只希望这个管理员扩展程序基于安全角色运行,而不是一直运行。

在 postPersist 和 postUpdate 中这不是问题,因为我可以使用 $admin->isGranted('QUICK_PUBLISH) 但在 configureFormFields 函数中我无法使用 $admin。

我找不到为管理扩展设置安全性的方法,有人知道这是如何工作的吗?我正在使用奏鸣曲 2.x

谢谢 凯文

【问题讨论】:

    标签: php symfony sonata-admin


    【解决方案1】:

    看看内置的Sonata LockExtension

    configureFormFields方法中,你应该可以从FormMapper获取管理对象:

    public function configureFormFields(FormMapper $form)
    {
        $admin = $form->getAdmin();
        //.....
    }
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 2015-04-26
      • 2017-03-18
      • 1970-01-01
      • 2012-11-14
      • 2013-09-21
      相关资源
      最近更新 更多