2010年12月22日
CakePHP - ACLの権限管理を超簡単にするプラグイン『Plugin ACL』
2011年3月15日
実際の開発に導入して問題なく動作しましたので、動作環境を追記しました。
2011年2月22日
プラグイン導入前に作っておくべき項目を追加、また全体的に推敲しました。
情報量が少ないCakePHPのACL関連
昨日から公式のチュートリアルを参考にACL*1の構築に取り組んでおりまして
ARO*2とかACO*3をマニュアル通りにレコード追加してたけど、これは辛い!
aros_acosテーブルも自作関数で1とか0とか-1とか・・・
なんとか完成しましたが、これではイカン・・・と思いました
『Plugin ACL』のダウンロード
公式フォーラムで紹介されていました。英語サイトです。
- Webサイト:Alaxos
- プラグイン:Plugin ACL
感想、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ルーティングの設定
- app/config/core.php の88行目の「Configure::write('Routing.prefixes', array('admin'));」を有効(コメントを外す)にする
- app/config/routes.php に「Router::connect('/admin', array('controller' => 'acl', 'action' => 'index', 'admin' => true));」を追加する
3.bootstrap.phpの編集
- app/plugins/acl/config/bootstrap.php のソースをコピーする
- app/config/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.を実行する。
『Plugin ACL』で権限設定(aros_acosテーブルの編集)をする方法
1.「Permissions」→「Users roles」で登録済みユーザーのロール(グループ)を設定する
2.「Permissions」→「Roles permissions」で登録済みロール(グループ)の権限を設定する
3.「「Permissions」→Users permissions」で登録済みユーザーの権限を個別設定する
ACLはややこしいですが、やはりWebサービスには必要な機能だと思います。
これからもACLに関する記事は挙げていきたいと思います。
--
PHP 5.3
CakePHP 1.3.7
- 8 http://reader.livedoor.com/reader/
- 5 http://twitter.com/
- 3 http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2501&forum=9&post_id=6387
- 3 http://pipes.yahoo.com/pipes/pipe.info?_id=02db597254ec68550537866a2fca2ce6
- 2 http://ezsch.ezweb.ne.jp/search/?query=mixi 自動消去&ct=0001&pd=1&sr=0000
- 2 http://labs.unoh.net/2010/12/php_11.html
- 2 http://longurl.org
- 2 http://pipes.yahoo.com/pipes/pipe.info?_id=faa858a20082ef6d25ad27557e37e011
- 2 http://search.yahoo.co.jp/search?p=関数 何分経ったか&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 2 http://search.yahoo.co.jp/search?p=cakephp1.3+form+input+date+&aq=-1&oq=&ei=UTF-8&fr=top_ga1_sa&x=wrt