email = $email; $this->password = $password; } /** * @brief Comprueba que la identificación de un usuario es correcta. * @return boolean */ public function authenticate() { $usuario = Usuario::model()->findByAttributes(array('email' => $this->email)); $ph = new PasswordHash( Yii::app()->params['phpass']['iteration_count_log2'], Yii::app()->params['phpass']['portable_hashes'] ); if ($usuario === NULL) { $this->errorCode = self::ERROR_USERNAME_INVALID; } else { if (($usuario->password !== md5($this->password)) && !$ph->checkPassword($this->password, $usuario->password)) $this->errorCode = self::ERROR_PASSWORD_INVALID; else if($usuario->estado == Usuario::ESTADO_NOACTIVO) $this->errorCode = self::ERROR_ESTADO_NOACTIVO; else if($usuario->estado == Usuario::ESTADO_BORRADO) $this->errorCode = self::ERROR_ESTADO_BORRADO; else if($usuario->estado == Usuario::ESTADO_BLOQUEADO) $this->errorCode = self::ERROR_ESTADO_BLOQUEADO; else { // Si el usuario tiene cifrada la contraseña con md5() // pasarla al nuevo método. if ($usuario->password{0} !== '$') { $usuario->password = $ph->HashPassword($this->password); $usuario->save(); } $this->_id = $usuario->id; $this->errorCode = self::ERROR_NONE; } } return !$this->errorCode; } /** * @brief Devuelve el identificador único para la identidad del usuario * @return string. */ public function getId() { return $this->_id; } /** * @brief Devuelve el email del usuario que está en sesión. * @return string */ public function getName() { return $this->email; } }