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'));
 }
Example #2
0
 /**
  * Метод аутентификации пользователя:
  *
  * @return bool is user authenticated
  **/
 public function authenticate()
 {
     if (($user = User::model()->active()->findByAttributes(array('email' => $this->username))) === null) {
         $this->errorCode = self::ERROR_USERNAME_INVALID;
     } else {
         if (!Yii::app()->userManager->hasher->checkPassword($this->password, $user->hash)) {
             $this->errorCode = self::ERROR_PASSWORD_INVALID;
         } else {
             // запись данных в сессию пользователя
             $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->update(array('last_visit'));
             $this->errorCode = self::ERROR_NONE;
         }
     }
     return $this->errorCode == self::ERROR_NONE;
 }
Example #3
0
 /**
  * Именнованные условия:
  * 
  * @return array
  */
 public function scopes()
 {
     return array('active' => array('condition' => $this->tableAlias . '.status = :user_status', 'params' => array(':user_status' => self::STATUS_ACTIVE)), 'blocked' => array('condition' => $this->tableAlias . '.status = :blocked_status', 'params' => array(':blocked_status' => self::STATUS_BLOCK)), 'admin' => array('condition' => $this->tableAlias . '.role = :role', 'params' => array(':role' => User::getSuperuserRole())), 'simpleUsers' => array('condition' => $this->tableAlias . '.role = :role', 'params' => array(':role' => self::getAuthenticatedRole())));
 }