ACL [Роли/Права пользователей]
Здравствуйте. Хотелось бы узнать- как вы разделяете пользователей и их права?
Смотрел в Yii(RBAC), Zend'e, Cake. Но так толком и не понял, как это все организовать.
Пробовал использовать эту "систему", но не получилось, так как для работы с БД использую xPDO.
Если есть, выложите, пожалуйста, готовый код. Спасибо :)
Смотрел в Yii(RBAC), Zend'e, Cake. Но так толком и не понял, как это все организовать.
Пробовал использовать эту "систему", но не получилось, так как для работы с БД использую xPDO.
Если есть, выложите, пожалуйста, готовый код. Спасибо :)
1 ответов
Использую Zend_Acl и не вижу в нем ничего сложного. Мой типичный конфиг выглядит так:
resources.acl.roles.guest.id = "guest"
resources.acl.roles.user.id = "user"
resources.acl.roles.user.parents = "guest"
resources.acl.roles.admin.id = "admin"
resources.acl.roles.admin.parents = "user"
resources.acl.resources.index.id = "index"
resources.acl.resources.error.id = "error"
resources.acl.resources.user.id = "user"
resources.acl.resources.all.allow.all.roles = "all"
resources.acl.resources.user.deny.all.roles = "all"
resources.acl.resources.user.allow.all.roles = "user"
resources.acl.resources.user.allow.login.roles = "all"
resources.acl.resources.user.allow.register.roles = "all"
resources.acl.resources.user.allow.register-complite.roles = "all"
resources.acl.resources.user.allow.confirmation-complite.roles = "all"
resources.acl.resources.user.allow.confirmation.roles = "all"
Что означает:
- Объявляю роли: гость-пользователь-админ, которые наследуются по цепочке
- Объявляю ресурсы (по простому - контроллеры)
- Сначала позволяю всем все
- Далее закрываю всем доступ к контроллеру user
- Далее разрешаю доступ к контроллеру user для пользователя. Админ тоже будет иметь доступ, так как он наследуется от пользователя, а вот гостю будет запрещено, так как на него это расширение не распространяется
- Но как-то надо логиниться? Значит разрешаю логин, регистрацию и еще пару действий всем
Вот и все. Единственное, что я храню в базе - это поле role в таблице users, чтобы разделять админов и обычных пользователей.
В общем-то написал систему, точнее переписал и оптимизировал существующую(ссылка в шапке вопроса) под xPDO.