<?php /** CrugeAuthDefault Implementa un modo de autenticacion basado en la lista de usuarios registrados reales almacenados con CrugeStoredUser. aqui se hara uso de CrugeModule::availableAuthModes y de CrugeModule::useEncryptedPassword esta clase es consumida por: CrugeUser::authenticate() quien a su vez es invocada por CrugeLogon @author: Christian Salazar H. <christiansalazarh@gmail.com> @salazarchris74 @license protected/modules/cruge/LICENSE */ class CrugeAuthDefault extends CBaseUserIdentity implements ICrugeAuth { public $username; public $password; public $options; private $_userinstance = null; private function _getPwd() { if (CrugeUtil::config()->useEncryptedPassword == true) { return CrugeUtil::hash($this->password); } return $this->password; } /** este nombre sera referenciado en config/main para hacerle saber a Cruge que use esta clase para autenticar: 'availableAuthMethods'=>array('authdemo'), */ public function authName() { return "default"; } /* no confundir con un getUserName, esto es un getUser a nivel de instancia @returns instancia de ICrugeStoredUser hallado tras la autenticacion exitosa */ public function getUser() { return $this->_userinstance; } public function setParameters($username, $password, $options = array()) { $this->username = $username; $this->password = $password; $this->options = $options; } public function authenticate() { Yii::log(__METHOD__, "info"); $this->errorCode = self::ERROR_USERNAME_INVALID; $model = Yii::app()->user->um->loadUser($this->username); Yii::log( __METHOD__ . ' ' . CrugeTranslator::t('logger', 'Returned User') . ":\n" . CJSON::encode($model), "info" ); $this->_userinstance = null; if ($model != null) { if ($model->password == $this->_getPwd()) { $this->_userinstance = $model; $this->errorCode = self::ERROR_NONE; } else { if (CrugeUtil::config()->debug == true) { // ayuda a instalar, quiza el usuario olvide quitar la encriptacion de claves // y reciba error de ERROR_PASSWORD_INVALID, es porque esta actuando el Hash // y el usuario recien creado trae una clave no encritpada if (CrugeUtil::config()->useEncryptedPassword == true) { echo Yii::app()->user->ui->setupAlert( CrugeTranslator::t( 'logon', 'Maybe your password doesn\'t match because you have set up \'useEncryptedPassword = true\' when you were installing Cruge, try \'false\' instead' ) ); } } $this->errorCode = self::ERROR_PASSWORD_INVALID; } } else { // username o email error $this->errorCode = self::ERROR_USERNAME_INVALID; } Yii::log( __CLASS__ . "\nauthenticate returns:\n" . $this->errorCode . "\n boolean result is:" . ($this->errorCode == self::ERROR_NONE), "info" ); return $this->errorCode == self::ERROR_NONE; } }