散々間を開けて投稿します。cakephpについてです。
高橋です
上のサイトを参考に(チョー助かった。ありがとうございます。)Plugin ACLの導入を進めていたがはまった。
まず、cakephpのcookbookの開発事例11.2 ACL を制御するシンプルなアプリケーションをすすめる。
グダグダ言わず全部やる。
その時ユーザー、グループの登録を焦ってやらない。ちゃんとcookbookの手順通りにユーザー、グループの登録をする。
http://ドメイン/admin/aclにアクセスする所でツマづいた。
アクセスしても確か
Warning (512): DbAcl::check() - Failed ARO/ACO node lookup in permissions check. Node references:以下略なんたらかんたらが出てきて何も出来ない。
色々と調べた結果、原因は結局プラグインのACLを追加したのに、acosテーブルにはadmin/acl等が追加されてないので、cakephpがとにかくアクセス禁止にしていたよー。(多分)
対処方法1は
app/app_controller.php
のbeforeFilter()関数に
parent::beforeFilter();
$this->Auth->allow('*');
を追加する。これはフィルタリング始める前にauthコンポーネントのアクセス許可を、とにかく全てOKにするよという処理(多分)。
(もちろん正しい設定をした後は削除かコメントアウトする。)
そしたら「admin/acl」にアクセス出来るようになった。
で!まだ油断しない!Plugin ACLを利用してacoを追加する。(高橋です。のページの「Actions」→「Build actions ACOs」→「Build」←これね)
その時リンクされているBuildをクリックしないと追加されないので注意。
これでadministrators権限を持っているユーザーなら、対処方法1を削除してもhttp://ドメイン/admin/aclにアクセスできる。
あー、3日悩んだ。…時間かかり過ぎだろオレ…
PluginACL自体はチョーグッド!!
---その後思いついた事です。---
対処方法の2。試してないけど
- app/plugin/acl/controllers/acl_controller.php
- app/plugin/acl/controllers/acos_controller.php
- app/plugin/acl/controllers/aros_controller.php
の3つのファイルのbeforeFilter()関数に
parent::beforeFilter();
$this->Auth->allow('*');
を足せばよかったかも。