Пример #1
0
 public function actionAjaxGenerateNewPassword()
 {
     echo CrugeUtil::passwordGenerator();
 }
Пример #2
0
 /**
  * createNewUser
  *    inserta un nuevo usuario con los valores mapeados indicados.
  *
  *    mapped_values, es un array -indexado- con los siguientes campos:
  *            'username'=>'userxxx', 'email'=>'*****@*****.**',
  *            y los siguientes serian los nombres de los campos
  *            personalizados
  *            'nombre'=>'pedro', 'apellido'=>'perez'
  *  si username es vacio (en el array de mapped_values) pues se genera uno.
  *
  * @param array $mapped_values array con valores mapeados
  * @param string $role_name usar 'default' para usar rol definido en variables de sistema.
  * @param boolean $bool_send_email true para que envie correos de notificacion
  * @access private
  * @return CrugeStoredUser retornado por um->createBlankUser
  */
 public function createNewUser($mapped_values, $role_name = 'default', $bool_send_email = true)
 {
     // para crear el usuario se requiere como minimo el email
     // si el username no fue provisto se creará uno en base
     // al email:
     //
     $password = CrugeUtil::passwordGenerator();
     $user = $this->createBlankUser();
     $user->email = $mapped_values['email'];
     if (isset($mapped_values['username'])) {
         $user->username = $mapped_values['username'];
     }
     // genera un username si el provisto es vacio
     if (empty($user->username)) {
         $user->username = $this->generateNewUsername($user->email);
     }
     // la establece como "Activada"
     $this->activateAccount($user);
     // ahora a ponerle una clave
     $this->changePassword($user, $password);
     // revisa que no duplique
     $_prev = CrugeFactory::get()->getICrugeStoredUser($user->username);
     if ($_prev != null) {
         throw new CrugeException("nombre usuario duplicado.");
     }
     $_prev = CrugeFactory::get()->getICrugeStoredUser($user->email);
     if ($_prev != null) {
         throw new CrugeException("correo duplicado.");
     }
     // guarda usando el API. No pasa por filtros. se reparara a futuro.
     if ($this->save($user)) {
         foreach ($mapped_values as $fieldname => $value) {
             if ($fieldname == 'username' || $fieldname == 'email') {
                 continue;
             } else {
                 // campo personalizado:
                 $fv = $this->getFieldValueInstance($user, $fieldname);
                 if ($fv != null) {
                     // evita una excepcion si se indica un nombre
                     // de campo personalizado inexistente.
                     //
                     $fv->value = $value;
                     $fv->update();
                 }
             }
         }
         // le asigna un rol por defecto
         //
         if ($role_name == 'default') {
             $role = $this->getDefaultSystem()->get("defaultroleforregistration");
         } else {
             $role = $role_name;
         }
         Yii::log(__METHOD__ . "\n role: " . $role, "info");
         if (Yii::app()->user->rbac->getAuthItem($role) != null) {
             Yii::log(__METHOD__ . "\n asignando role: " . $role . " a userid:" . $user->getPrimaryKey(), "info");
             Yii::app()->user->rbac->assign($role, $user->getPrimaryKey());
         }
         // le envia un email con su clave generada automaticamente
         if ($bool_send_email == true) {
             Yii::app()->crugemailer->sendPasswordTo($user, $password);
         }
         return $user;
     } else {
         // un error de validacion. emitido por alguna regla de
         // cruge.models.data.CrugeStoredUser
         //
         $errores = CHtml::errorSummary($user);
         throw new CrugeException("no se pudo crear el usuario: " . $errores);
     }
 }