CakePHP: настройка разрешения/запрета ACL не работает (таблицы не обновляются)?

Я пытаюсь настроить свой ACL со следующим действием в моем UsersController:

class UsersController extends AppController {

    var $name = 'Users';
    var $helpers = array('Html', 'Form');

    function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('*');


    }

    function install() {
        $group =& $this->User->Group;

        //Allow admins to everything
        $group->id = 1;     
        $this->Acl->allow($group, 'controllers');

        //allow users
        $group->id = 2;
        $this->Acl->deny($group, 'controllers');
        $this->Acl->allow($group, 'controllers/Messages');
        $this->Acl->allow($group, 'controllers/MessageLists');
        $this->Acl->allow($group, 'controllers/Products');
        $this->Acl->allow($group, 'controllers/Widgetviews');
    }

Итак, я следую за localhost/users/install, и после повторения некоторых чисел в функции я понял, что она работает. Однако Cake выдает следующую ошибку:

Error: The requested address '/users/install' was not found on this server.

Я действительно не знаю, в чем проблема, но после этого все мои таблицы acos/aros/aros_acos остались нетронутыми. Вот их данные из следующего запроса:

mysql> select * from aros_acos a join acos c on a.aco_id=c.id join aros r on a.a
ro_id=r.id
    -> ;
+----+--------+--------+---------+-------+---------+---------+----+-----------+-------+-------------+-------------+------+------+----+-----------+-------+-------------+-------+------+------+
| id | aro_id | aco_id | _create | _read | _update | _delete | id | parent_id | model | foreign_key | alias       | lft  | rght | id | parent_id | model | foreign_key | alias | lft  | rght |
+----+--------+--------+---------+-------+---------+---------+----+-----------+-------+-------------+-------------+------+------+----+-----------+-------+-------------+-------+------+------+
|  1 |      1 |      1 | 1       | 1     | 1       | 1       |  1 |      NULL | NULL  |        NULL | controllers |    1 |    2 |  1 |      NULL | Group |           1 | NULL  |    1 |    4 |
|  2 |      2 |      1 | -1      | -1    | -1      | -1      |  1 |      NULL | NULL  |        NULL | controllers |    1 |    2 |  2 |      NULL | Group |           2 | NULL  |    5 |   10 |
|  3 |      1 |      2 | 1       | 1     | 1       | 1       |  2 |      NULL | NULL  |        NULL | controllers |    3 |    4 |  1 |      NULL | Group |           1 | NULL  |    1 |    4 |
|  4 |      2 |      2 | -1      | -1    | -1      | -1      |  2 |      NULL | NULL  |        NULL | controllers |    3 |    4 |  2 |      NULL | Group |           2 | NULL  |    5 |   10 |
+----+--------+--------+---------+-------+---------+---------+----+-----------+-------+-------------+-------------+------+------+----+-----------+-------+-------------+-------+------+------+
4 rows in set (0.00 sec)

РЕДАКТИРОВАТЬ: у меня для отладки установлено значение 0, поэтому после переключения на 2 я получаю следующие предупреждения:

Warning (512): AclNode::node() - Couldn't find Aro node identified by "Array
(
    [Aro0.model] => Group
    [Aro0.foreign_key] => 1
)
" [CORE\cake\libs\model\db_acl.php, line 191]
Warning (512): DbAcl::allow() - Invalid node [CORE\cake\libs\controller\components\acl.php, line 324]
Warning (512): AclNode::node() - Couldn't find Aro node identified by "Array
(
    [Aro0.model] => Group
    [Aro0.foreign_key] => 2
)
" [CORE\cake\libs\model\db_acl.php, line 191]

Я также воссоздал свой DbAcl, и он заполнил таблицу acos, но не таблицы aros или aros_acos. Предупреждение выше - это то, что я получаю, пытаясь снова запустить действие install.


person Garrett    schedule 09.01.2012    source источник


Ответы (2)


Я думаю, вам нужно создать ACO для контроллеров/сообщений и т. д., прежде чем вы сможете назначать разрешения.

Установите уровень отладки на 2 в app/config/core.php, чтобы получать более точные сообщения об ошибках. Настройка «производство» заставляет Cake выдавать одно и то же сообщение для каждой ошибки.

person Joni    schedule 09.01.2012
comment
я, должно быть, выключил его в пятницу: \ я обновил свой пост с предупреждениями. - person Garrett; 09.01.2012
comment
это было моей ошибкой - мне просто пришлось воссоздать группы и пользователей после того, как я воссоздал DbAcl, чтобы они зарегистрировались как ARO. Спасибо! - person Garrett; 10.01.2012

Вы пробовали эту команду:

../cake/console/cake acl создать корневую группу aro

../cake/console/cake acl создать корневую группу Group.1

../cake/console/cake acl создать корневую группу Group.2

../cake/console/cake acl создать корневую группу Group.3

person Artmetic    schedule 29.06.2013