Esempio n. 1
0
 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));
 }
Esempio n. 2
0
 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;
 }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
 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));
 }
Esempio n. 6
0
 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));
 }
Esempio n. 7
0
 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;
 }
Esempio n. 8
0
?>
</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');
?>
Esempio n. 9
0
 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.");
     }
 }
Esempio n. 10
0
 public function init()
 {
     parent::init();
     $this->setModule(CrugeUtil::config());
 }
Esempio n. 11
0
 private function reportError($itemName)
 {
     if (CrugeUtil::config()->allowUserAlways == false) {
         throw new CrugeException($itemName, 401);
     }
 }
 public function getIsGuest()
 {
     return $this->getId() == CrugeUtil::config()->guestUserId;
 }
Esempio n. 13
0
 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);
         }
     }
 }
Esempio n. 14
0
 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));
 }
Esempio n. 16
0
 public function changePassword(ICrugeStoredUser $user, $newPassword)
 {
     $epwd = $newPassword;
     if (CrugeUtil::config()->useEncryptedPassword == true) {
         $epwd = CrugeUtil::hash($newPassword);
     }
     $user->password = $epwd;
 }
Esempio n. 17
0
 public function getCGridViewClass()
 {
     return CrugeUtil::config()->useCGridViewClass;
 }
Esempio n. 18
0
 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));
     }
 }