Изменить стратегию голосования Symfony динамически

С Symfony Voters Система довольно легко получить хороший ACL и запустить для веб-приложения. Тем не менее, вы должны сначала решить, какую стратегию вы хотели бы использовать.

Symfony поддерживает 3 стратегии: affirmative, consensus а также unanimous (см. их документацию)

affirmative (по умолчанию): это предоставляет доступ, как только один избиратель предоставляет доступ;
consensus: Это дает доступ, если число избирателей, предоставляющих доступ, превышает число отказавших;
unanimous: Это дает доступ только тогда, когда все избиратели предоставляют доступ.

Я в настоящее время использую affirmative стратегия. В одном особом случае (пока, может быть, будет больше в будущем), мне нужно использовать unanimous стратегия.

Есть ли способ сделать это, или мне просто нужно создать там систему проверки (скопировать код всех вовлеченных избирателей)?

1 ответ

Вы пытались расширить Symfony's AccessDecisionManager вашим собственным классом с собственной стратегией и регистрацией в сервисном контейнере? Вы можете проверить реализацию этого класса и увидеть, что вы можете определить свою собственную стратегию, создав простой метод внутри класса.

Другой вариант, вы можете попробовать использовать access_control а также allow_if как сказано здесь

Другие вопросы по тегам