admin5 это не группа — это как раз таки конкретный админ Вася.
Вариантов хранения может быть очень много и они сильно зависят от того какие права нужно хранить.
Ок.
Но а как релизовать то, что я написал? Т.е. если есть группа admin5 и Васе надо добавить ещё прав, кроме тех, которые прописаны в группе? Делать двойную проверку для группы и для юзера?
Нет, просто расширить иерархию ролей, сделать каждого админа отдельной ролью, которая наследует от группы адмнов, а затем переопределить для него правило и проверять только для роли конкретного админа
ну так вот… в мануале по Zend_Acl все хорошо расписано. Кроме того есть описание расширенного варианта, когда доступ нужен в зависимости от критериев.
В готовой реализации Acl на основе хранения прав в базе нет смысла, просто потому, что это никак не связанные сущности. Acl лишь регистрирует в себе абстрактные списки ролей, ресурсов и прав и обеспечивает между ними взаимосвязь. А как и где вы храните эти списки, исключительно ваша забота.
Ещё было бы интересно как реализовать такой уровень доступа:
role может редактировать только свои записи в resource
Например: модераторы могут редактировать только свои собственные новости; или юзеры могут редактировать только свои собственные комментарии. Админы при этом могут редактировать все комментарии и все новости.
в принципе у меня есть такая готовая система связанная вместе с доктриной 2, но можно использовать и отдельно, именно то что вам нужно, если интересует напишите мне.
Вот всегда напрягали названия методов в Zend_Acl
AddRole — понятно
add — что add, куда add? Почему на AddResource?
$this->add(new Zend_Acl_Resource('admin_res'));
Я бы переписал, как $this->addResource('admin_res'), а уже внутри метода обворачивал бы в Zend_Acl_Resource
Кстати можно это сделать как раз в классе-наследнике.
Иногда очень странные решения и интерфейсы появляются у хороших и больших дядек и тетек…
Практикум Zend Framework. Часть третья: Zend_Acl