mmh, ok. But the problem is that even if I change the find("count") into a 
find("all") it still loads data only from Group table.

Yes I am using the AuthComponent for logged in users. But since I want to 
use my Authorize class also for managing what anonymous users can access I 
am calling $this->Auth->isAuthorized() in the beforeFilter of AppController 
with a $user parameter of array('id'=>0). Inside the authorize method I 
recognize the empty user and make checks for permissions on an hard coded 
group id. I checked this would work correctly, if only I could make the 
query in the right way.

Let's change the question. Which code would you write to make CakePHP 
execute this query:

> SELECT COUNT(*) AS count FROM groups INNER JOIN groups_perms ON 
> groups.id=groups_perms.group_id INNER JOIN perm ON 
> groups_perms.perm_id=perm.id WHERE group.id=1 AND perm.id='can_access_admin'

given that you have access to $this->controller()->Group?

Thanks

On Wednesday, January 2, 2013 7:59:24 PM UTC+1, cricket wrote:
>
> When running a find('count') the contain param is useless. This is 
> because the main query is fetching a sum, not a set of records from 
> which to fetch the associated 'contain' records. 
>
> Are you using AuthComponent? You can use that to fetch the User and 
> associated records. However, I can't remember how deep it goes. To see 
> what records it has, put this in your UsersController login method: 
>
> die(debug($this->Auth->user())); 
>
>
> http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#accessing-the-logged-in-user
>  
>
> On Tue, Jan 1, 2013 at 5:23 PM, Stefano Campanella 
> <leon...@guildofmessengers.com <javascript:>> wrote: 
> > Hello all, 
> > this is my first time posting here. I recently started to study how to 
> use 
> > CakePHP and I'm trying to develop a website. 
> > In my website I am writing a custom authorize component where each user 
> get 
> > one or more groups and each group has one or more permissions associated 
> to 
> > it. 
> > I have problems in using the find() method. 
> > This is my structure: 
> > User hasAndBelongsToMany Group 
> > Group hasAndBelongsToMany Perm 
> > 
> > I have attached Containable to all the Models (in AppModel) 
> > 
> > now in my authorization component I need to check if a group has a 
> specific 
> > permission, and for this I use find(): 
> > 
> >> if(!isset($this->controller()->Group)){ 
> >>   $this->controller()->loadModel('Group'); 
> >> } 
> >> $n_perm=$this->controller()->Group->find('count',array( 
> >>   'conditions'=>array('id'=>1), 
> >>   'contain'=>array( 
> >>     'Perm'=>array( 
> >>       'conditions' => array('id'=>'can_access_admin') 
> >>     ) 
> >>   ) 
> >> 
> >> )); 
> > 
> > 
> > I would expect this to give me a result >=1 if group 1 has the 
> > 'can_access_admin' permission, and =0 if the group has no such 
> permission. 
> > This is not what actually happens, the only query that cakePHP shows is 
> > this: 
> > 
> > SELECT COUNT(*) AS `count` FROM `groups` AS `Group` WHERE `id` = 1 
> > 
> > And it is obviously not enough to find what I requested. 
> > 
> > Can anyone help me? 
> > 
> > Thanks 
> > 
> > -- 
> > Like Us on FaceBook https://www.facebook.com/CakePHP 
> > Find us on Twitter http://twitter.com/CakePHP 
> > 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "CakePHP" group. 
> > To post to this group, send email to cake...@googlegroups.com<javascript:>. 
>
> > To unsubscribe from this group, send email to 
> > cake-php+u...@googlegroups.com <javascript:>. 
> > Visit this group at http://groups.google.com/group/cake-php?hl=en. 
> > 
> > 
>

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com.
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.


Reply via email to