Я следовал простому учебнику ACL-приложения CakePHP Cookbook и какое-то время был прекрасен и хорош. Когда я создавал пользователя, мои ARO также создавались автоматически, и без особых усилий я смог дать всем разрешения на правильные действия.
Хотя мое приложение стало более сложным. Когда я создаю «Риэлтор», я создаю для них пользователя в функции afterSave модели Риэлтор, например:
App::import( 'Component', 'Auth' );
$this->Auth = new AuthComponent();
$this->User->create();
$this->User->set(array(
'username' => $this->data['Realtor']['email'],
'password' => $this->Auth->password($this->data['Realtor']['password']),
'usergroup_id' => 2,
'realtor_num' => $this->id
));
if ($this->User->save()) {
$this->save(array('user_id'=>$this->User->id));
} else {
//error
}
К сожалению, хотя это успешно создает пользователей, и все данные, кажется, соответствуют моим ожиданиям, я, похоже, больше не получаю ARO.
Модель моей группы пользователей содержит строку
var $actsAs = array('Acl' => array('type' => 'requester'));
Кроме того, я понятия не имею, как убедить мое приложение генерировать ARO.
Есть ли что-нибудь, что я мог бы забыть, что помогло бы мне вернуть свой ACL в нужное русло?
EDIT:
У меня было это в afterSave модели User, которая, кажется, вызывала различные виды проблем:
function afterSave($created) {
if (!$created) {
$parent = $this->parentNode();
$parent = $this->node($parent);
$node = $this->node();
$aro = $node[0];
$aro['Aro']['parent_id'] = $parent[0]['Aro']['id'];
$this->Aro->save($aro);
}
}
. как-то портит мое создание ARO ... возможно, научит меня добавлять случайные фрагменты кода, по крайней мере, не полностью понимая, что они делают!