24 Feb 2014

[CakePHP]AuthモジュールとACLまわりの衝突

どうやら、AuthモジュールとACLまわりのモジュールはAuthの設定が優先されるっぽい。

http://book.cakephp.org/2.0/ja/tutorials-and-examples/simple-acl-controlled-application/part-two.html

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('initDB'); //この行は終わったあと削除できます
}

public function initDB() {
    $group = $this->User->Group;
    //管理者グループには全てを許可する
    $group->id = 1;
    $this->Acl->allow($group, 'controllers');

    //マネージャグループにはpostsとwidgetsに対するアクセスを許可する
    $group->id = 2;
    $this->Acl->deny($group, 'controllers');
    $this->Acl->allow($group, 'controllers/Posts');
    $this->Acl->allow($group, 'controllers/Widgets');

    //ユーザグループにはpostsとwidgetsに対する追加と編集を許可する
    $group->id = 3;
    $this->Acl->deny($group, 'controllers');
    $this->Acl->allow($group, 'controllers/Posts/add');
    $this->Acl->allow($group, 'controllers/Posts/edit');
    $this->Acl->allow($group, 'controllers/Widgets/add');
    $this->Acl->allow($group, 'controllers/Widgets/edit');
    //馬鹿げた「ビューが見つからない」というエラーメッセージを表示させないためにexitを追加します
    echo "all done";
    exit;
}
 とならんでいると、Aclの設定は無視される、ようです。