@SweetLemonade

SonataAdminBundle. Как лучше проверять роль пользователя при определенном действии?

Задача следующая.

Имеется раздел новостей, где есть модераторы и администраторы. Модераторы могут добавлять новости, но не могут их опубликовывать. Администраторы, разумеется, это делать могут.

Самое интересное - это то, что это всего лишь галочка в форме добавления/редактирования. Получается, что нужно показывать/прятать эту галку, когда у пользователя есть/нет роли "публикования".

Получается встает вопрос: каким путем пойти, чтобы добавить проверку на роль "публикования"?.

Как извращение, то можно создать слушателя, который будет перехватывать prePersist/preUpdate и проверять имеется ли галка "опубликовать" и смотреть роль пользователя.

А как вы бы реализовали подобное?
  • Вопрос задан
  • 2306 просмотров
Решения вопроса 1
@neolink
если вы делаете это через формы, то можно проверить роль и не добавлять это поле если эта проверка не прошла
вот кусок кода для вдохновения (только security.context нужно будет передавать в форму если они у вас в отдельном файле):
symfony.com/doc/current/book/security.html#securin...

ну и по правильному проверку надо сделать так:
$this->get('security.context')->isGranted('PUBLISH', $news)

а саму проверку реализовать через SecurityVoter:
symfony.com/doc/current/cookbook/security/voters.html
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы