public function actionIngresar() { $model = Yii::app()->user->um->getNewCrugeLogon('login'); // por ahora solo un metodo de autenticacion por vez es usado, aunque sea un array en config/main // $model->authMode = CrugeFactory::get()->getConfiguredAuthMethodName(); Yii::app()->user->setFlash('loginflash', null); Yii::log(__CLASS__ . "\nactionLogin\n", "info"); if (isset($_POST[CrugeUtil::config()->postNameMappings['CrugeLogon']])) { $model->attributes = $_POST[CrugeUtil::config()->postNameMappings['CrugeLogon']]; if ($model->validate()) { if ($model->login(false) == true) { Yii::log(__CLASS__ . "\nCrugeLogon->login() returns true\n", "info"); // a modo de conocimiento, Yii::app()->user->returnUrl es // establecida automaticamente por CAccessControlFilter cuando // preFilter llama a accessDenied quien a su vez llama a // CWebUser::loginRequired que es donde finalmente se llama a setReturnUrl $this->redirect(Yii::app()->user->returnUrl); } else { Yii::app()->user->setFlash('loginflash', Yii::app()->user->getLastError()); } } else { Yii::app()->user->setFlash('loginflash', CHtml::errorSummary($model)); Yii::log(__CLASS__ . "\nCrugeUser->validate es false\n" . CHtml::errorSummary($model), "error"); } } $this->render('ingresar', array('model' => $model)); }
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 (CrugeUtil::checkhash($this->password, $model->password)) { $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; }
public function authenticate() { Yii::log(__METHOD__, "info"); $this->errorCode = self::ERROR_USERNAME_INVALID; $model = Yii::app()->user->um->loadUser($this->username); Yii::log(__METHOD__ . " usuario retornado es:\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 MD5 // y el usuario recien creado trae una clave no encritpada if (CrugeUtil::config()->useEncryptedPassword == true) { echo Yii::app()->user->ui->setupAlert("Quiza su clave no coincide porque ha configurado 'useEncryptedPassword = true' estando en la fase de instalacion, pruebe deshabilitandolo"); } } $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; }
private function _getUsernameLabel() { $label = ""; $sep = ""; foreach (CrugeUtil::config()->availableAuthModes as $k => $v) { $label .= $sep . CrugeTranslator::t('logon', ucfirst(CrugeUtil::config()->availableAuthModes[$k])); $sep = " " . CrugeTranslator::t('logon', 'or') . " "; } return $label; }
public function actionRecuperarclave() { if (!Yii::app()->user->isGuest) { $this->redirect(array('/usuario/perfil')); } $model = Yii::app()->user->um->getNewCrugeLogon('pwdrec'); Yii::app()->user->setFlash('pwdrecflash', null); if (isset($_POST[CrugeUtil::config()->postNameMappings['CrugeLogon']])) { $model->attributes = $_POST[CrugeUtil::config()->postNameMappings['CrugeLogon']]; if ($model->validate()) { $newPwd = substr(md5(rand() . rand() . time()), 0, 8); Yii::app()->user->um->changePassword($model->getModel(), $newPwd); //Yii::app()->crugemailer->sendPasswordTo($model->getModel(), $newPwd); $this->getModule()->crugemailer->enviar_clave($model->getModel(), $newPwd); Yii::app()->user->um->save($model->getModel()); Yii::app()->user->setFlash('pwdrecflash', CrugeTranslator::t('Una nueva clave ha sido enviada a su correo')); } } $this->render('recuperar', array('model' => $model)); }
public function actionProfile() { if (Yii::app()->user->checkAccess('aliado')) { $this->layout = '//layouts/webapp/index'; } $model = Yii::app()->user->user; // ciudado es: user->user, el cual da al CrugeStoredUser Yii::app()->user->um->loadUserFields($model); // le pedimos al api que carge los campos personalizados $this->performAjaxValidation('crugestoreduser-form', $model); $postName = CrugeUtil::config()->postNameMappings['CrugeStoredUser']; if (isset($_POST[$postName])) { $model->attributes = $_POST[$postName]; if (isset($_POST['Affiliates'])) { $affiliate->attributes = $_POST['Affiliates']; if ($model->validate()) { $newPwd = trim($model->newPassword); if ($newPwd != '') { Yii::app()->user->um->changePassword($model, $newPwd); Yii::app()->crugemailer->sendPasswordTo($model, $newPwd); } if (Yii::app()->user->um->save($model, 'update') && $affiliate->save()) { Yii::app()->user->setFlash('profile-flash', 'Your Profile has been saved.'); } } } else { if ($model->validate()) { $newPwd = trim($model->newPassword); if ($newPwd != '') { Yii::app()->user->um->changePassword($model, $newPwd); Yii::app()->crugemailer->sendPasswordTo($model, $newPwd); } if (Yii::app()->user->um->save($model, 'update')) { Yii::app()->user->setFlash('profile-flash', 'Your Profile has been saved.'); } } } } Yii::app()->user->checkAccess('aliado') ? $this->render("profile", array('model' => $model, 'affiliate' => Affiliates::model()->findByPk(Yii::app()->user->name))) : $this->render("profile", array('model' => $model)); }
public function validate($attributes = null, $clearErrors = true) { // si el metodo de autenticacion es solo email, y, username es blanco // se genera uno automaticamente: if ($this->scenario == 'insert') { $declared_authmodes = CrugeUtil::config()->availableAuthModes; if (count($declared_authmodes == 1)) { if ($declared_authmodes[0] == 'email' && $this->username == '') { $um = new CrugeUserManager(); $this->username = $um->generateNewUserName($this->email); } else { if ($declared_authmodes[0] == 'username' && $this->email == '') { $this->email = $this->username . '@noemail.local'; } } } } // realiza la validacion normal sobre los atributos de este modelo $validateResult = parent::validate(); // ahora realiza la validacion sobre aquellos campos personalizados // y copia todos los errores al objeto mayor ($this) // foreach ($this->getFields() as $f) { if ($f->validateField() == false) { $this->addErrors($f->getErrors()); $validateResult = false; } } return $validateResult; }
?> </h1> <div class="form"> <?php /* $model: es una instancia que implementa a ICrugeStoredUser */ $form = $this->beginWidget('CActiveForm', array('id' => 'registration-form', 'enableAjaxValidation' => false, 'enableClientValidation' => false)); ?> <div class="row form-group-vert"> <h6><?php echo ucfirst(CrugeTranslator::t("datos de la cuenta")); ?> </h6> <?php foreach (CrugeUtil::config()->availableAuthModes as $authmode) { echo "<div class='col'>"; echo $form->labelEx($model, $authmode); echo $form->textField($model, $authmode); echo $form->error($model, $authmode); echo "</div>"; } ?> <div class="col"> <?php echo $form->labelEx($model, 'newPassword'); ?> <div class='item'> <?php echo $form->textField($model, 'newPassword'); ?>
public function getUserFilter() { $filterClass = CrugeUtil::config()->userFilter; $filepath = Yii::getPathOfAlias($filterClass) . ".php"; $className = CrugeUtil::getClassNameFromPhp($filepath); if (is_file($filepath)) { if (!class_exists($className, false)) { require $filepath; } if (class_exists($className, false)) { Yii::log(__METHOD__ . "\nnueva instancia de: " . $className, "info"); return new $className(); } else { Yii::log(__METHOD__ . " clase no hallada." . $className, "error"); throw new CrugeException("clase no hallada. ver log."); } } else { Yii::log(__METHOD__ . " ruta de clase es invalida:" . $filepath, "error"); throw new CrugeException(__METHOD__ . " ruta de clase es invalida. ver log."); } }
public function init() { parent::init(); $this->setModule(CrugeUtil::config()); }
private function reportError($itemName) { if (CrugeUtil::config()->allowUserAlways == false) { throw new CrugeException($itemName, 401); } }
public function getIsGuest() { return $this->getId() == CrugeUtil::config()->guestUserId; }
public function actionActivationUrl($key) { $this->layout = CrugeUtil::config()->activateAccountLayout; $model = Yii::app()->user->um->loadUserByKey($key); if ($model != null) { if ($model->state == CRUGEUSERSTATE_NOTACTIVATED) { $resp = CrugeTranslator::t("disculpe, no se pudo activar su cuenta"); Yii::app()->user->um->activateAccount($model); if (Yii::app()->user->um->save($model)) { $resp = CrugeTranslator::t("su cuenta ha sido activada, ahora debe iniciar sesion con las credenciales otorgadas"); } $this->renderText($resp); } } }
public function actionActivationUrl($key) { $this->layout = CrugeUtil::config()->activateAccountLayout; $model = Yii::app()->user->um->loadUserByKey($key); if ($model != null) { if ($model->state == CRUGEUSERSTATE_NOTACTIVATED) { $resp = CrugeTranslator::t("Disculpe, no se ha podido activar su cuenta, comuniquese con el administrador."); Yii::app()->user->um->activateAccount($model); if (Yii::app()->user->um->save($model)) { $resp = CrugeTranslator::t("Su cuenta ha sido activada correctamente. Por favor " . Yii::app()->user->ui->loginLink . " con los datos enviados a su correo."); } } else { $resp = CrugeTranslator::t("Su cuenta ya está activada. " . Yii::app()->user->ui->loginLink); } $this->renderText($resp); } }
public function actionPerfil() { $model = Yii::app()->user->user; // ciudado es: user->user, el cual da al CrugeStoredUser Yii::app()->user->um->loadUserFields($model); // le pedimos al api que carge los campos personalizados //$this->performAjaxValidation('crugestoreduser-form', $model); $postName = CrugeUtil::config()->postNameMappings['CrugeStoredUser']; if (isset($_POST[$postName])) { $model->attributes = $_POST[$postName]; if ($model->validate()) { $newPwd = trim($model->newPassword); if ($newPwd != '') { Yii::app()->user->um->changePassword($model, $newPwd); Yii::app()->crugemailer->sendPasswordTo($model, $newPwd); } if (Yii::app()->user->um->save($model, 'update')) { Yii::app()->user->setFlash('profile-flash', 'Tus datos de usuario han sido actualizados'); } } } $this->render("profile", array('model' => $model)); }
public function changePassword(ICrugeStoredUser $user, $newPassword) { $epwd = $newPassword; if (CrugeUtil::config()->useEncryptedPassword == true) { $epwd = CrugeUtil::hash($newPassword); } $user->password = $epwd; }
public function getCGridViewClass() { return CrugeUtil::config()->useCGridViewClass; }
private function _button($label, $name = null) { $ar = array(); $_type = 'submit'; // siempre son submit $_icon = 'remove white'; if ($name == null) { $_icon = 'ok white'; $name = 'submit'; } $ar = array('name' => $name); $label = ucwords($label); $estiloBoton = CrugeUtil::config()->buttonStyle; if ($estiloBoton == 'jui') { Yii::app()->getController()->widget('zii.widgets.jui.CJuiButton', array('name' => $name, 'caption' => $label)); return; } if ($estiloBoton == 'bootstrap') { Yii::app()->getController()->widget('bootstrap.widgets.TbButton', array('buttonType' => $_type, 'type' => 'primary', 'htmlOptions' => $ar, 'icon' => $_icon, 'label' => $label, 'size' => CrugeUtil::config()->buttonConf)); return; } echo CHtml::submitButton($label, $ar); }
public function onLogout(ICrugeSession $model) { Yii::log(__CLASS__ . ".onLogout", "info"); if (!empty(CrugeUtil::config()->afterLogoutUrl)) { Yii::app()->getController()->redirect(CHtml::normalizeUrl(CrugeUtil::config()->afterLogoutUrl)); } }