CakePHPのACL(Access Control List)の解説を砕いてみる~リクエスタとして振舞う~
CakePHPのACL(Access Control List)の解説を砕いてみる~ACL のデータベーステーブルの初期化~の続き。
ここでやるべきこと。
- User モデルにAclBehaviorを追加する
- User モデルにparentNodeメソッドを追加する
- Group モデルにAclBehaviorを追加する
- Group モデルにparentNodeメソッドを追加する
- グループとユーザを追加する
User モデルにAclBehavior、parentNodeメソッドを追加する
<?php class User extends AppModel { var $name = 'User'; //--add start mitsugi-bb-------- var $actsAs = array('Acl' => array('requester')); function parentNode() { if (!$this->id && empty($this->data)) { return null; } $data = $this->data; if (empty($this->data)) { $data = $this->read(); } if (!$data['User']['group_id']) { return null; } else { return array('Group' => array('id' => $data['User']['group_id'])); } } //--add end mitsugi-bb-------- //The Associations below have been created with all possible keys, those that are not needed can be removed var $belongsTo = array( 'Group' => array('className' => 'Group', 'foreignKey' => 'group_id', 'conditions' => '', 'fields' => '', 'order' => '' ) ); var $hasOne = array( 'Post' => array('className' => 'Post', 'foreignKey' => 'user_id', 'dependent' => false, 'conditions' => '', 'fields' => '', 'order' => '' ) ); var $hasMany = array( 'Post' => array('className' => 'Post', 'foreignKey' => 'user_id', 'dependent' => false, 'conditions' => '', 'fields' => '', 'order' => '', 'limit' => '', 'offset' => '', 'exclusive' => '', 'finderQuery' => '', 'counterQuery' => '' ) ); } ?>
Group モデルにAclBehavior、parentNodeメソッドを追加する
<?php class Group extends AppModel { var $name = 'Group'; //--add start mitsugi-bb-------- var $actsAs = array('Acl' => array('requester')); function parentNode() { return null; } //--add end mitsugi-bb-------- //The Associations below have been created with all possible keys, those that are not needed can be removed var $hasOne = array( 'User' => array('className' => 'User', 'foreignKey' => 'group_id', 'dependent' => false, 'conditions' => '', 'fields' => '', 'order' => '' ) ); var $hasMany = array( 'User' => array('className' => 'User', 'foreignKey' => 'group_id', 'dependent' => false, 'conditions' => '', 'fields' => '', 'order' => '', 'limit' => '', 'offset' => '', 'exclusive' => '', 'finderQuery' => '', 'counterQuery' => '' ) ); } ?>
グループとユーザを追加する
ブラウザでgroups/addにアクセスして管理者グループを作成する
同じようにマネージャーグループ、一般ユーザグループを作成する
次にusers/addにアクセスしてユーザを作成する
同じように、マネージャグループのユーザ、一般ユーザグループのユーザを作成する
確認のために、SELECT * FROM aros;を実行してみる。
※注意
このチュートリアルを進める上で一つ注意点があります。それは、 User のグループを変更しても、それらの ARO は変更されないということです。これは別途、行う必要があります。
ということで、既存ユーザのUPDATEを行っても、arosテーブルは更新されないです。
次のページはまた今度(ぁ
次のページへ進む。