protected function _auth($user)
{
$this->_id = $user->id;
$this->username = $user->email;
$this->setState('id', $user->id);
$this->setState('role', $user->role);
$this->setState('email', $user->email);
$this->setState('loginTime', time());
// для админа в сессию запишем еще несколько значений
if ($user->role == User::getSuperuserRole()) {
$this->setState('loginAdmTime', time());
$this->setState('isAdmin', true);
/* Получаем настройки по всем модулям для данного пользователя: */
$settings = Settings::model()->fetchUserModuleSettings($user->id);
$sessionSettings = array();
/* Если передан не пустой массив, проходим по нему: */
if (!empty($settings) && is_array($settings)) {
foreach ($settings as $sets) {
/* Наполняем нашу сессию: */
if (!isset($sessionSettings[$sets->module_id])) {
$sessionSettings[$sets->module_id] = array();
}
$sessionSettings[$sets->module_id][$sets->param_name] = $sets->param_value;
}
}
$this->setState('modSettings', $sessionSettings);
}
// зафиксируем время входа
$user->last_visit = new CDbExpression('NOW()');
$user->visits_count++;
$user->update(array('last_visit', 'visits_count'));
}