Я использую SonataAdminBundle без SonataUserBundle, но только с FOSUserBundle. Причина в том, что я использую Symfony 3, а SonataUserBundle там не работает.
Теперь у меня есть 24 услуги администратора. Мне нужно изменить только один класс администратора, чтобы пользователи не могли создавать новых пользователей и изменять профили других пользователей. Это может сделать только суперадмин.
Но значит ли это, что я должен вот так прописать 24 роли администраторов?
ROLE_OPTICKS_ACCESS:
- ROLE_SONATA_ADMIN_FOO_LIST
- ROLE_SONATA_ADMIN_FOO_VIEW
- ROLE_SONATA_ADMIN_FOO_CREATE
- ROLE_SONATA_ADMIN_FOO_EDIT
- ROLE_SONATA_ADMIN_FOO_DELETE
- ROLE_SONATA_ADMIN_FOO_EXPORT
Тогда в моем файле security.yml будет около 144 таких строк. А то я могу убрать две строчки с надписью ROLE_SONATA_ADMIN_USER_CREATE
и ROLE_SONATA_ADMIN_USER_EDIT
и тогда еще придумать выход сделать так, чтобы можно было редактировать только свой профиль.
Кто-нибудь может помочь? Это лучший способ сделать это? Я делаю это правильно?
Потому что я как раз думал о чем-то подобном;
protected function configureRoutes(RouteCollection $collection)
{
$securityContext = $this->getConfigurationPool()->getContainer()->get('security.authorization_checker');
if (!$securityContext->isGranted('ROLE_SUPER_ADMIN')) {
$collection->remove('create');
$collection->remove('edit');
}
}
Но, видимо, я делаю это неправильно, и я также получаю сообщение об ошибке;
Хранилище токенов не содержит токена аутентификации. Одна из возможных причин может заключаться в том, что для этого URL-адреса не настроен брандмауэр.
Пожалуйста, мне очень нужна помощь.