Finally I got the solution. Just put following line in User model:
public $actsAs = array('Acl' => array('type' => 'requester', 'enabled'
=> false));On Oct 31, 10:23 pm, warLog <[email protected]> wrote: > I want to utilise the concept of groups in ACL. I am very new to > cakephp, and messed up with ACL. My database tables are as follows: > CREATE TABLE IF NOT EXISTS `gcfa_groups` ( > `id` int(11) NOT NULL AUTO_INCREMENT, > `name` varchar(255) NOT NULL, > PRIMARY KEY (`id`) > ); > > CREATE TABLE IF NOT EXISTS `gcfa_users` ( > `id` int(11) NOT NULL AUTO_INCREMENT, > `password` varchar(50) NOT NULL, > `active` tinyint(4) NOT NULL DEFAULT '1', > `email` varchar(255) DEFAULT NULL, > `group_id` int(11) NOT NULL, > `name` varchar(100) NOT NULL, > PRIMARY KEY (`id`) > ); > > id is being used as username. > > My model files are as follows: > class User extends AppModel { > var $name = 'User'; > > var $hasMany = array('UserBank', 'UserNominee', 'Payment'); > var $belongsTo = array( > 'Group' => array('className' => > 'Group', > 'foreignKey' > => 'group_id' > ) > ); > public $actsAs = array('Acl' => array('type' => 'requester')); > > public function parentNode() { > if (!$this->id && empty($this->data)) { > return null; > } > $data = $this->data; > if (empty($this->data) || empty($this->data['User']['group_id'])) > { > $data = $this->read(); > } > > if (!$data['User']['group_id']) { > return null; > } else { > $this->Group->id = $data['User']['group_id']; > $groupNode = $this->Group->node(); > return array('Group' => array('id' => > $groupNode[0]['Aro'] > ['foreign_key'])); > } > } > > public function bindNode($object) { > if (!empty($object[$this->alias]['group_id'])) { > return array('model' => 'Group', 'foreign_key' => > $object[$this->alias]['group_id']); > > } > } > > function isAuthorized($user, $controller, $action) { > return true; > } > > } > > class Group extends AppModel { > public $displayField = 'name'; > var $hasMany = array('User'); > > public $actsAs = array('Acl' => array('requester')); > > public function parentNode() { > return null; > } > > } > > I just baked the controller and view files for these models using > shell. I have setup my ACL as follows: > id parent_id model foreign_key alias lft rght > 1 NULL Group 1 SuperUser 1 2 > 2 NULL Group 2 Administrator 3 4 > 3 NULL Group 3 Manager 5 6 > 4 NULL Group 4 Author 7 8 > > Whenever I am going to edit any user it is giving me error : > Warning (512): AclNode::node() - Couldn't find Aro node identified by > "Array > ( > [Aro0.model] => User > [Aro0.foreign_key] => 2 > ) > " [CORE/Cake/Model/AclNode.php, line 179] > > Do I need to make separate entry of every user in aros table? If yes, > then what is the use of groups in this case? If I want to bypass this > creation of new entry in acos table, is it possible? I think if I am > able to override AclBehaviour::afterSave method then I can do that. > I dont want to create a separate entry for every user in the ACL. -- Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/cake-php
