Re: ACL is not working for groups

2011-11-01 Thread sixthpoint
awesome response time :) thanks!

On Nov 1, 11:05 am, sixthpoint  wrote:
> I am having this exact same error, let me know if you find a solution.
>
> On Oct 31, 12:23 pm, warLog  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
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php


Re: ACL is not working for groups

2011-11-01 Thread sixthpoint
I am having this exact same error, let me know if you find a solution.

On Oct 31, 12:23 pm, warLog  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
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php


Re: ACL is not working for groups

2011-11-01 Thread warLog
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  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
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php


ACL is not working for groups

2011-10-31 Thread warLog
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   NULLGroup   1   SuperUser   1   2
2   NULLGroup   2   Administrator   3   4
3   NULLGroup   3   Manager 5   6
4   NULLGroup   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
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php