Как реализовать динамическую роль в Symfony?

Коллеги приветствую.

Хочу повысить универсальность создаваемой системы.
Сейчас использую роли ROLE_USER, ROLE_ADMIN, ...
Так же использую Voters.

Но проблема заключается в том, что ROLE_USER, ROLE_ADMIN жестко связано с бизнес логикой.

Отсюда проблемы, например ввод новой роли требует дополнительных правок в коде.
Чем дальше тем хуже.

Что я хочу сделать.
Я хочу реализовать возможность создания динамической роли.

То есть, администратор нажимает создать новую роль и соответственно её настраивает.

Но тут возникает одна неприятная проблема, в интерфейсе я обязан знать что именно эта роль является администратором или ещё кем то, что бы показывать и скрывать блоки в зависимости от роли.

Моё решение:
User
id = 1
name = 'Вася'
role = 1

Role
id = 1
name = 'Администратор'
permissions = [''user.create, 'user.delete']

И в контроллере
$this->denyAccessUnlessGranted(UserVoter::DELETE, $user);


А в UserVoter
Выполняю проверку, позволяет ли данная роль удалять пользователей.

В общем ужен совет.
Может у кого-то есть лучше решение.

Заюзал ACL но в данном проекте он излишен, а ролей в классической реализации недостаточно.
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы