Коллеги приветствую.
Хочу повысить универсальность создаваемой системы.
Сейчас использую роли
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 но в данном проекте он излишен, а ролей в классической реализации недостаточно.