Это зависит от того, что вы хотите сделать с Acl. То, на что вы обращали внимание в плагине Croogo или Alaxos Acl (кстати, мой плагин), - это использование Acl для разрешения / запрета доступа к некоторым действиям.
Это достигается за счет совместного использования AuthComponent и AclComponent. При этом, если вы посмотрите на код Cake, проверка полномочий выполняется в классе DbAcl
следующим способом:
function check($aro, $aco, $action = "*")
, который принимает три аргумента.
Вызов этой функции выполняется классом ActionsAuthorize
в функции authorize()
в следующей строке:
return $Acl->check($user, $this->action($request));
, который, очевидно, является вызовом без третьего аргумента.
Так что же это за третий аргумент? Это способ позаботиться о полях _xxx таблицы данных aros_acos. Таким образом, все вместе это означает, что компоненты Auth + Acl не используют эти поля _xxx для проверки разрешений.
Ну, на самом деле они используются, но по-другому: когда третий аргумент не используется, все поля, установленные на 1
, означают разрешенные, а если одно или несколько полей установлены на -1
, это означает, что запрещены.
Лично для плагина Alaxos Acl я решил установить для всех этих полей значение -1
для отказа, просто для большей ясности.
Что касается вашего приложения, если его «функции» сопоставлены с действиями, вы, вероятно, можете просто забыть эти поля _xxx и использовать основной механизм Auth + Acl.
По поводу вашего последнего вопроса (владелец редактирует и удаляет), это часто задаваемый вопрос с Cake ACL.
В большинстве случаев ответ заключается в том, что проще сравнить Object.user_id и зарегистрированный идентификатор пользователя, чтобы определить, может ли пользователь редактировать / удалять запись. Cake ACL не поддерживает владельцев записей из коробки.