У меня есть приложение, в котором пользователь может быть связан с несколькими компаниями. Связь manyToMany с компанией представляет собой выделенную сущность, называемую Associate.
Я хотел бы предоставить этому ассоциированному объекту ту же функциональность роли, что и мой объект FOSUserBundle User. Важно: если у пользователя есть role_manager для одной компании, ему не следует давать права доступа к определенным функциям другой компании, к которой он принадлежит.
Есть ли чистый способ сделать это? Например, я хотел бы проверить, верно ли значение $this->getUser->getAssociate->hasRole('ROLE_MANAGER').
Что, если я передам массив ролей моему ассоциированному объекту? Я читал, что это недостаточно безопасно? Почему? Что может сделать кто-то, чтобы нарушить эту безопасность, если моим пользователям все равно придется проходить проверки безопасности при входе в систему FOS?
Я нашел статью, в которой предлагается использовать избиратель. Но я не хочу фильтровать маршруты, я действительно хочу проверить условие на связь между пользователем и компанией, поэтому, если решение — избиратель, как мне его использовать?
РЕДАКТИРОВАТЬ: если существует лучшее решение, не связанное с ролями или с другой логикой, мне интересно узнать об этом!!