public function actionAjaxGenerateNewPassword() { echo CrugeUtil::passwordGenerator(); }
/** * 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); } }