Мне нужно получить роли пользователя из базы данных.
Я хочу сделать это один раз и перед всем. Поэтому я вызываю функцию из конструктора AppController, который использует компонент сеанса. Функция приведена ниже
public function getRoles() {
if ($this->Session->check('user_name')) {
$username = $this->Session->read('user_name');
$userdesc = $this->Session->read('user_desc');
if ($userdesc === 'Student') {
$this->roles['Student'] = true;
} elseif ($userdesc === 'Faculty') {
$this->roles['Teacher'] = true;
$this->loadModel('UserRole');
$userRolesList = $this->UserRole->getUserRolesList($username);
$this->loadModel('Role');
$rolesList = $this->Role->getRolesList();
foreach($userRolesList as $userRole)
{
$this->roles[$rolesList[$userRole['UserRole']['role_id']]] = true;
}
}
}
}
Я загружаю компонент сеанса, используя массив. Но я не могу использовать $this->Session
. Если я загружаю компонент на лету, функция выдает другие ошибки. Но если я вызову эту функцию из beforeFilter(), это не создаст проблем. Почему я не могу сделать это внутри конструктора?