昨日から公式のチュートリアルを参考にACL*1の構築に取り組んでおりまして
ARO*2とかACO*3をマニュアル通りにレコード追加してたけど、これは辛い!
aros_acosテーブルも自作関数で1とか0とか-1とか・・・
なんとか完成しましたが、これではイカン・・・と思いました
感想、Plugin ACL は利用者に優しいプラグイン
まず、ACOのレコードがボタンひとつで自動生成!
アクセス権限(パーミッション)の設定についても、○と☓を切り替えるだけ!
またAjax対応でページ遷移なしって具合です。これは素敵
プラグイン導入前に作っておくべき項目
- テーブルの作成(users、groups、aros、acos、aros_acos)
- ACLビヘイビアで関連付け(arosとusers、arosとgroups)
- var $actsAs = array('Acl' => array('requester'));
- userモデルとgroupモデルでparentNode()を作る
- アソシエーションの設定(userモデル、groupモデル)
- User belongsTo Group
- Group hasMany User
- Bakeしたフォームからグループとユーザーを追加(自動的にAroが追加されていればOK)
- Authコンポーネントの利用、ログイン機能(app_controller.php)
- コントローラのパスを設定する(app_controller.php)
- $this->Auth->actionPath = 'controllers/';
- 外部オブジェクトを指定する(app_controller.php)
- $this->Auth->authorize = 'actions';
『Plugin ACL』の導入
※手順の解説のみで翻訳はしません
1.ダウンロードした最新の「alaxos_acl_X.X.X.zip」の中にある「acl」フォルダを app/plugins に入れる
2.adminルーティングの設定
3.bootstrap.phpの編集
『Plugin ACL』でAROとACOを自動構築する
1.http://ドメイン/admin/acl にアクセスする。
↓のような画面が表示される。
もし、以下のエラーが表示された場合は、
app/config/bootstrap.php の「Configure :: write('acl.check_act_as_requester', true);」を
「Configure :: write('acl.check_act_as_requester', false);」に変更し、ページを更新する
ACL plugin
The Group model is not configured to act as an ACL requester
In a classical ACL configuration, the models that represent the users and the roles must act as ACL requesters (see Acts As a Requester).
If you wish, you can disable this alert by setting the ACL plugin parameter 'acl.check_act_as_requester' to false.
2.ACOの自動生成。「Actions」→「Build actions ACOs」→「Build」
3.AROの自動生成。「Permissions」→「Build missing AROs」→「Build」
※もし、rollsテーブルではなくgroupsテーブルを作成している場合は、
app/config/bootstrap.php の「Configure :: write('acl.aro.role.model', 'Role');」を
「Configure :: write('acl.aro.role.model', 'Group');」に変更し、再度3.を実行する。