Динамически добавлять новые роли пользователям Symfony2

Можно ли вручную обновить роли пользователей с помощью Symfony2?

В моем приложении пользователи могут работать со многими компаниями. У каждого из них разные роли.

При входе в систему я хотел бы дать им роли их компании по умолчанию, а когда они меняют компанию, я хотел бы удалить предыдущие роли и добавить роли новой компании.


person Sébastien    schedule 31.10.2013    source источник
comment
Я только что ответил на аналогичный вопрос здесь - stackoverflow.com/questions/19713802   -  person dmnptr    schedule 01.11.2013


Ответы (1)


Да, это возможно. Но я бы не советовал вам динамически удалять и добавлять роли на коммутаторе компании, поскольку это может привести к проблемам с безопасностью. Если вы хотите использовать базовую систему ролей, вы можете создавать роли с префиксом названия компании (это плохая идея, если у вас много компаний). Или обновите контекст безопасности, чтобы использовать ACL. Возможно, самое простое решение - создать пользователя для каждой компании с одинаковыми учетными данными (или без учетных данных, если вы управляете переключением пользователей) и разными ролями.

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

person windm    schedule 31.10.2013
comment
Что мне не нравится в ACL, так это то, что они проверяются в коде каждого действия. Роли устанавливаются в файле конфигурации безопасности, поэтому их можно легко проверять и поддерживать. В моем случае мне просто нужны несколько простых ролей для каждого кортежа пользователь-компания (например: COMPANY_ADMIN_ROLE, COMPANY_EMPLOYE_ROLE, COMPANY_SUPPLIER_ROLE и COMPANY_CLIENT_ROLE). - person Sébastien; 31.10.2013