最近やっとまともにACLをやり始めたnojimageです。こんにちは。

さて、ACLのACOを生成するのに便利なツールがCookbookに紹介されています。

10.2.6 ACO の作成を自動化するツール

このツールを使うと、開発中のアプリケーションのControllerクラスから、各actionを抽出し、ACOテーブルに追加していってくれるとても便利な関数なのですが、ちょっとばかし問題があるためそのままでは使えません。

[ad]

どこに問題があるの?

_getPluginControllerNames() メソッドに問題があります。

プラグイン名の処理にInflector::humanize()を使用している
これはAuthコンポーネントの処理に合わせるならInflector::camelize()を使用しなければなりません。
プラグインの抽出場所が APP/plugins 固定
/pluginsなどに置いたプラグインのコントローラは見つけてくれません。

というわけで修正してみました。

gist: 433926 - CakePHP An Automated tool for creating ACOs fix- GitHub

おまけ

ACOを削除したい場合はこちらが参考になるかもしれません。 "ACLにおけるACO削除の自動化" フォーラム - CakePHP Users in Japan