Saturday, December 6, 2008

Re: Adding extra user info to session

> I assume that I would do this by adding some code somewhere in the
> AppController, but where and how would I call it?
>
> I don't think it would go in beforeFilter() as that would try and run
> even if a user wasn't authorised, or would I put a call in there that
> first checked if the user was logged in and then ran an action which
> would add my extra data to the session?

Well I have gone for the following which is working, but could someone
say if it is the right way to achieve what I want?

[code]
class AppController extends Controller {
...

function beforeFilter() {
if ($this->Session->check('Auth.User')) {
$this->__AuthExtra();
}
}

function __AuthExtra() {
$authUser = $this->Session->read('Auth.User');
App::import('Model', 'Person');
$person = new Person;
$data = $person->find('first', array(
'conditions' => array('Person.user_id' => $authUser['id']),
'fields' => array('Person.id', 'Person.title',
'Person.first_name', 'Person.middle_name', 'Person.last_name',
'Organisation.id', 'Organisation.name')
));
if ($authUser['user_group_id'] == 3) {
$data = Set::merge($data, $person->Organisation->find('first',
array(
'conditions' => array('Organisation.id' => $data
['Organisation']['id']),
'fields' => array('Scheme.id')
)));
}
if ($authUser['user_group_id'] == 3) {
$data = Set::merge($data, $person->Organisation->find('first',
array(
'conditions' => array('Organisation.id' => $data
['Organisation']['id']),
'fields' => array('Scheme.id', 'Agency.id')
)));
}
$this->Session->write('AuthExtra', $data);
}
}
[/code]
--~--~---------~--~----~------------~-------~--~----~
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+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

No comments: