Я создаю портал, к которому могут присоединиться пользователи и компании. Пользователи могут быть независимыми или работать в компании. Существует некоторый базовый доступ, доступный всем пользователям независимо от их типа (независимый или связанный с компанией). Существует еще несколько функций, доступных независимым пользователям, но если пользователь находится под управлением компании, менеджер компании сможет разрешить/запретить их доступ к определенным функциям. Как я могу управлять этим с помощью Zend_Acl?zend acl множественные списки доступа/уровни
1
A
ответ
1
У вас ACL могут быть условия.
В файле, где я объявляю свои ACL (плагин кстати), у меня есть следующее объявление. Acl_AdminCanAccessUsers
является Zend_Acl_Assert_Interface
и либо вернется TRUE или FALSE. Здесь я также передаю объект Request конструктору.
// Complex function to see if the current user can create/edit the desired user account.
$acl->allow('client', 'user', array('edit','create'), new Acl_AdminCanAccessUsers($this->_request));
Теперь давайте взглянем на Acl_AdminCanAccessUsers
<?php
class Acl_AdminCanAccessUsers implements Zend_Acl_Assert_Interface
{
public function __construct($request) {
$this->request = $request;
}
public function assert(Zend_Acl $acl,
Zend_Acl_Role_Interface $role = null,
Zend_Acl_Resource_Interface $resource = null,
$privilege = null)
{
/**
* Can only test when trying to edit a user account
*/
if ("edit" != $privilege) {
return TRUE;
}
$identity = Zend_Auth::getInstance()->getIdentity();
/**
* Get the id from the URL request
*/
$id = $this->request->getParam('id');
/**
* Get user account from DB
*/
$user = Doctrine_Core::getTable('User')->find($id);
// Are they editing their own account? Give them a pass
if ($identity->user_id == $user->user_id) {
return TRUE;
}
// If they don't have the isAdmin flag set to yes on their account
// Then we'll just deny them immediately
if ($identity->isAdmin) {
return TRUE;
}
return FALSE;
}
}
Как вы можете видеть здесь, мы проверяем децибел для записи пользователя и сравнивая его с параметром, который запрашивается или проверками, если они имеют IsAdmin флаг установлен в их идентификаторе Zend_Auth. Вы можете сделать много условной проверки для своих списков ACL, если есть больше доступа, чем просто роль, ресурс и привилегия.
Счастливое кодирование!
Смежные вопросы
- 1. Zend: ACL логика Помощники
- 2. Zend Framework - аутентификация ACL
- 3. zend acl Модульная реализация?
- 4. Zend Навигация привилегии без Zend ACL,
- 5. Zend Navigation, ACL и Partials
- 6. Zend ACL разрешает определенные действия
- 7. Многократная навигация Zend с ACL
- 8. Zend Framework 2 добавить Acl
- 9. Zend Navigation Несколько ролей ACL
- 10. Knockoutjs arrayFilter множественные выпадающие списки
- 11. Множественные списки опций динамического выбора
- 12. Drupal расширенные списки ACL для «ненадежных» администраторов
- 13. PHP Unit Testing с Zend Auth и Zend ACL
- 14. zend navigation панировочные сухари для обхода ACL
- 15. от Zend Acl роль не ясна
- 16. Предоставление страниц навигации Zend Несколько привилегий ACL
- 17. Аутентификация + acl в zend framework 2
- 18. Zend ACL - преобразование разрешения для общественности
- 19. Изменения Родителя для ресурса - Zend ACL - 1.7.3
- 20. Выполняет ли Zend ACL мои потребности?
- 21. Zend framework Обработка ошибок с помощью ACL
- 22. Сохранение списков ACL для Zend Framework
- 23. zend acl для списка записей для просмотра
- 24. zend acl с дополнительными параметрами url
- 25. Динамический пользовательский ACL в zend framework?
- 26. Zend ACL и доступ к конкретным объектам
- 27. Получить список правил в zend acl
- 28. Zend Framework ACL Роли и модули
- 29. Zend Framework ACL для раздела администратора сайта
- 30. Zend ACL бросает исключение на несуществующие ресурсы
Вы сначала ознакомились с представлением Zend_Acl, и вы не знаете, как управлять своей задачей? http://framework.zend.com/manual/en/zend.acl.introduction.html –
Я храню acl (роли, ресурсы и разрешения/режим) в db, и есть две разные группы таблиц. Один имеет дело с сайтом, в то время как второй имеет дело с доступом, контролируемым менеджером компании. Итак, как я могу управлять двумя разными типами списков ACL? Детали, приведенные в руководстве, даже не охватывают, как мы можем использовать базу данных для управления acls. Мне удалось достичь этого, но нужно руководствоваться несколькими типами ACL – Bryan