Настройте главную панель управления Sonata-admin

Я новичок в проекте Sonata, и, «поигравшись» с ним, я хотел использовать его для одного из своих проектов.

Но у меня все еще остается несколько вопросов о Sonata и о том, как она работает и может быть настроена.

Вот они:

  • Можно ли использовать пользовательский контроллер для отображения «дома» на панели инструментов?
  • Я хотел бы использовать роли и только роли для управления своей безопасностью, но не могу понять, как добавить роли в список, который отображается при использовании формы создания пользователей (по умолчанию находится в /admin/my/bundle/user/create) на вкладке «Управление». . Является ли это возможным? Экран для более подробного объяснения: введите здесь описание изображения

    Если да, если у кого-то есть подсказки о том, как это сделать, пожалуйста! :)

  • Использование этих ролей означает управление правами этих на мои объекты/контроллер. Есть ли какой-либо механизм для этого или мне нужно добавить свой?

person Yoann Chambonnet    schedule 03.12.2013    source источник


Ответы (2)


В symfony вы можете настроить сторонний пакет, унаследовав этот пакет. Итак, чтобы использовать свой собственный контроллер, выполните следующие действия шаг за шагом:

В свой персональный пакет: AcmeDemoBundle.php добавьте:

public function getParent()
{
    return 'SonataAdminBundle';
}

Теперь ваш пакет наследует SonataAdminBundle.

В вашем пользовательском контроллере: AcmeDemoBundleCustomController.php

class CustomController extends CoreController {

  public function dashboardAction()
  {
      ...
      /* Here goes your code */
  }

}
person Turdaliev Nursultan    schedule 03.12.2013
comment
Это кажется хорошей идеей Турдалиев, у вас есть идеи по двум другим пунктам? - person Yoann Chambonnet; 03.12.2013
comment
Я бы предложил вам FOSUserBundle + SonataUserBundle в качестве инструмента управления пользователями. - person Turdaliev Nursultan; 03.12.2013
comment
Вы сами занимаетесь безопасностью. Я имею в виду без каких-либо сторонних пакетов. - person Turdaliev Nursultan; 03.12.2013
comment
Я тоже использую FosUserBundle + SonataUserBundle :) Просто хотелось бы разобраться, как добавлять роли в список, который отображается при управлении правами пользователя. Я добавил его в исходный пост. - person Yoann Chambonnet; 03.12.2013
comment
В FOSUserBundle у вас есть group объект, который используется для добавления новых ролей. Пытаться - person Turdaliev Nursultan; 03.12.2013
comment
Да, но группа объединяет существующие роли. Я хотел бы использовать роли напрямую для выполнения операции isGranted в контексте токена безопасности пользователя, поэтому я хотел бы использовать роли напрямую и задаться вопросом, как я могу добавить/настроить их. - person Yoann Chambonnet; 03.12.2013
comment
давайте продолжим это обсуждение в чате - person Yoann Chambonnet; 03.12.2013

Ответ Турдалиева - правильный ответ на ваш первый вопрос.

Что касается ролей, отображаемые роли присутствуют в файле security.yml вашего приложения:

security:
    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_SONATA_ADMIN, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH, ROLE_SONATA_PAGE_ADMIN_PAGE_EDIT, ROLE_SONATA_PAGE_ADMIN_BLOCK_EDIT]

В Sonata реализован механизм ACL, добавляющий новые роли для различных действий, таких как просмотр, удаление,... Подробный пример вы можете увидеть в демо (https://github.com/sonata-project/sandbox), ознакомьтесь с документацией по безопасности SonataAdmin для получения более подробной информации: http://sonata-project.org/bundles/admin/master/doc/reference/security.html

person Hugo Briand    schedule 11.12.2013
comment
Спасибо за помощь Хьюго! Я проверяю это :) - person Yoann Chambonnet; 11.12.2013