CakePHP Acl путаница - отказано в доступе к группе, но пользователь этой группы имеет доступ - PullRequest
1 голос
/ 07 сентября 2011

Теперь я должен что-то упустить в своем приложении, контролируемом ACL.Моя модель User принадлежит модели под названием Role.Я включил поведение ACL в обеих моделях.Обе модели имеют функции parentNode - в Role это возвращает нуль.В User код ниже:

public function parentNode() {
    if (!$this->id && empty($this->data)){
        return null;
    }
    if (isset($this->data['User']['role_id'])){
        $roleId = $this->data['User']['role_id'];
    } else {
        $roleId = $this->field('role_id');
    }
    if (!$roleId){
        return null;
    } else {
        return array('Role' => array('id' => $roleId));
    }
}

Я вошел как пользователь, у которого role_id = 8. В моей таблице aros у пользователя есть parent_id 9, который является записью aro дляправильная роль.

Я создал следующее действие для иллюстрации проблемы:

public function permissions(){
    $this->autoRender = false;
    if($this->Acl->check(array('model'=>'User','foreign_key'=>$this->Auth->user('id')),'Countries')){
        echo 'User: Allowed<br />';
    }else{
        echo 'User: Forbidden<br />';
    }
    if ($this->Acl->check(array('model'=>'Role','foreign_key'=>$this->Auth->user('role_id')),'Countries')){
        echo 'Role: Allowed';
    }else{
        echo 'Role: Forbidden';
    }
}

Когда я запускаю действие, я получаю:

User: Allowed
Role: Forbidden

Пользовательская записьне имеет записей в таблице aros_acos.Единственные записи в этой таблице предназначены для Role aros.

Может кто-нибудь пролить свет на это?

Спасибо.

Редактировать - на случай, если неясно, ожидаемыйПоведение будет состоять в том, что и пользователю, и роли запрещен доступ к этому контроллеру («Страны»).

Редактировать - я назначаю разрешения следующим образом:

    $this->Acl->deny('City admin','Countries');

ИмеюВ базе данных подтверждено, что это сработало.

1 Ответ

0 голосов
/ 15 сентября 2011

Я просто собираюсь выйти на конечность здесь, так как вы не ответили на мой вопрос.Вы проверили это?

Не могу точно сказать, поскольку вы его не показываете, но вы должны настроить свои разрешения и разрешенные действия так, как указано в этой ссылке.

...