Symfony @Security Аннотация с пользовательским избирателем

Я написал собственного избирателя, чтобы проверить, является ли пользователь владельцем книги, которую он пытается редактировать.
Поэтому я использую аннотацию «@Security» для защиты контроллера:

@Security("is_granted('BookVoter::ATTRIBUTE_OWNER', book)")

Это то, что я хотел бы, чтобы аннотация @Security выглядела, но она работает только тогда, когда я пишу следующее:

@Security("is_granted('OWNER', book)")

Я не хочу «жестко» кодировать строку «ВЛАДЕЛЕЦ», это константа в моем BookVoter.
Есть идеи как этого добиться?

С уважением.

3

Решение

Что вы передаете @Security аннотация Язык выражения.

SensionFrameworkExtraBundle обеспечивает is_granted функция к языку выражения (посмотреть здесь).

Язык выражений по умолчанию имеет constant() функция, поэтому вы должны использовать ее в вашем случае:

@Security("is_granted(constant('\\Full\\Namespace\\To\\BookVoter::ATTRIBUTE_OWNER'), book)")

Обратите внимание, что вы должны использовать полное обозначение пространства имен.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector