Я делаю новый проект в symfony1.4. Теперь этот проект требует от пользователей входа в систему и просмотра, а так как любой проект такого типа требует ограничения пользователей на основе ролей. Я не хочу реализовывать это очевидным образом, т. Е. Иметь атрибут ролей для каждого пользователя и иметь заранее определенные роли и назначать их пользователям. Проблема с этим заключается в том, что он не очень гибкий, поскольку больше ролей определяется позже.
Я думал о том, как использовать модель EAV здесь (не уверен, что могу сделать это в symfony). Что вы, ребята, думаете, есть ли у вас какие-либо предложения, чтобы сделать роли пользователей более гибкими, когда они добавляются или удаляются.
Кроме того, что является лучшим способом отображения страницы на основе ролей пользователя, так как я хочу, чтобы некоторые элементы были скрыты в соответствии с ролями. Должен ли я сравнивать роль на каждой странице и скрывать элементы на каждой странице? Есть ли лучшее решение?
Прошу пролить свет на них.
благодаря
Плагин sfDoctrineGuard (http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin) – довольно комплексный способ обработки аутентификации пользователей, групп и учетных данных. Пользователи могут устанавливать разрешения как по отдельности, так и в группе, и доступ к определенным разделам страниц или целым действиям может быть ограничен на основе этих разрешений. Вы можете установить новые учетные данные пользователя в самом коде контроллера, например
<?php $this->getUser()->setCredential('editor'); ?>
И убедитесь, что пользователь имеет определенные разрешения в представлениях:
<?php if ($sf_user->hasCredential('editor')) { // stuff only for editors } ?>
На этой странице есть много дополнительной информации о плагине, не охватываемом файлом readme – http://trac.symfony-project.org/wiki/sfGuardPluginExtraDocumentation (хотя это относится к Propel, а не к Doctrine). Кроме того, следующая серия коротких обучающих программ довольно полезна:
http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-installation
http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-administration
http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-securing-actions
И страница руководства Symfony для пользователей: