dongqiyou0303 2016-08-24 09:15
浏览 30
已采纳

将安全性放在Sonatas Admin Extensions上

I want to add a 'quick publish' function when saving pages in sonata admin - this function needs to be locked down to certain individuals with the correct 'role' or 'permission'.

I initially played around with changing the base template to add a form button and doing it all in the PageAdmin postUpdate/postPersist functions but felt this was a bit too messy.

I have now looked at using an AdminExtension - doing this meant removing the button from the form as I didn't really want to overwrite the template for this one change. To do this i've added a configureFormFields function:

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();

}

I have then added my postPersist and postUpdate functions in here that will make the necessary updates.

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

The problem i'm facing is that I only want this admin extension to run based on the security roles not just all the time.

In postPersist and postUpdate it isn't an issue as I can use $admin->isGranted('QUICK_PUBLISH) but $admin isn't available to me in the configureFormFields function.

I can't find a way to put security around the admin extensions, anyone know how this works? I'm using Sonata 2.x

Thanks Kevin

  • 写回答

1条回答 默认 最新

  • donglin7979 2016-08-24 16:24
    关注

    Take a look at the built in Sonata LockExtension

    In the configureFormFields method, you should be able to get the admin object from the FormMapper :

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

    Hope this helps

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值