Эта команда предоставит всем вашим ARO доступ к вашим ACO cake acl grant RootGroupName RootControllerName all
.
После этого вы можете указать конкретные действия, которым вы хотели бы запретить доступ: cake acl deny GroupName ControllerName|AcoActionName AcoActionName|permissions
Если вашВторое значение после deny было AcoActionName, вам нужно будет использовать одно из следующих значений для разрешений: all, create, read, update, delete
.
Небольшая касательная:
Вот где, я полагаю, может возникнуть путаница.Структура вашего ACL [ACO и ARO] - это просто имена узлов, которые обычно соответствуют структуре вашего контроллера / настройки действия, но могут называться любым именем, которое вы пожелаете, так как разрешения проверяются в каждом действии.ACL-списки CakePHP организованы в виде дерева (структура данных) , и внешние узлы могут иметь установленные разрешения CRUD на уровне базы данных.
Вот пример схемы ACL для пользователей и комментариев.
Aco tree:
---------------------------------------------------------------
[1] controllers (root node)
[2] Comments
[3] edit
[4] add
[5] delete
---------------------------------------------------------------
Aro tree:
---------------------------------------------------------------
[1] Groups (root node)
[2] Users
[3] Admin
---------------------------------------------------------------
Предполагая, что доступ предоставлен глобально, все Запрашивающие стороны имеют доступ ко всем Объектам.Если вы хотите отказать пользователям в возможности редактировать комментарии после того, как они отправили их, вы запустите cake acl deny Users Comments edit
. Вот отличное руководство по спискам ACL, в частности, код App_Controller в конце, в котором есть хороший фрагмент кода.которая проверяет разрешения для структуры ACO, которая соответствует контроллеру / действию: Права пользователя и CakePHP ACL .
Кроме того, в CakePHP Book есть хороший фрагмент для вставки всех ваших контроллеров / действий в качестве правил ACO: Автоматический инструмент для создания ACO