Add files via upload
This commit is contained in:
parent
1a67a7169a
commit
40e74c9eff
36
assets/php/common/user.php
Normal file
36
assets/php/common/user.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
class User {
|
||||
|
||||
//Attributes:
|
||||
private $_id; //User Id.
|
||||
private $_username; //User name.
|
||||
private $_email; //User email.
|
||||
private $_password; //User password.
|
||||
private $_rol; //Type of user: user | manager | admin. --> Será eliminado en la siguiente práctica para usar el modelo relacional de nuestra BD.
|
||||
|
||||
//Constructor:
|
||||
function __construct($id, $username, $email, $password, $rol){
|
||||
$this->_id = $id;
|
||||
$this->_username = $username;
|
||||
$this->_email = $email;
|
||||
$this->_password = $password;
|
||||
$this->_rol = $rol;
|
||||
}
|
||||
|
||||
//Methods:
|
||||
|
||||
//Getters && Setters:
|
||||
public function setId($id){ $this->_id = $id; }
|
||||
public function getId(){ return $this->_id; }
|
||||
public function setName($username){ $this->_username = $username; }
|
||||
public function getName(){ return $this->_username; }
|
||||
public function setEmail($email){ $this->_email = $email; }
|
||||
public function getEmail(){ return $this->_email; }
|
||||
public function setPass($passwd){ $this->_password = $passwd; }
|
||||
public function getPass(){ return $this->_password; }
|
||||
public function setRol($rol){ $this->_rol = $rol; }
|
||||
public function getRol(){ return $this->_rol; }
|
||||
|
||||
}
|
||||
?>
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
require_once('../assets/php/dao.php');
|
||||
include_once('user_dto.php');
|
||||
include_once('user.php');
|
||||
|
||||
class UserDAO extends DAO {
|
||||
|
||||
@ -97,9 +97,21 @@
|
||||
return $resul;
|
||||
}
|
||||
|
||||
//Change username by id.
|
||||
public function changeUserName($id, $username){
|
||||
$id = $this->mysqli->real_escape_string($id);
|
||||
$username = $this->mysqli->real_escape_string($username);
|
||||
|
||||
$sql = sprintf( "UPDATE users SET username = '%s' WHERE id = '%d'", $username, $id );
|
||||
$resul = mysqli_query($this->mysqli, $sql) or die ('Error into query database');
|
||||
|
||||
return $resul;
|
||||
|
||||
}
|
||||
|
||||
//Create a new User Data Transfer Object.
|
||||
public function loadUser($id, $username, $email, $password, $rol){
|
||||
return new UserDTO($id, $username, $email, $password, $rol);
|
||||
return new User($id, $username, $email, $password, $rol);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -44,4 +44,6 @@
|
||||
* @see http://php.net/manual/en/language.types.callable.php
|
||||
*/
|
||||
register_shutdown_function(array($app, 'shutdown'));
|
||||
|
||||
|
||||
?>
|
||||
|
@ -1,238 +1,216 @@
|
||||
<?php
|
||||
|
||||
class Form {
|
||||
/**
|
||||
* Sufijo para el nombre del parámetro de la sesión del usuario donde se almacena el token CSRF.
|
||||
*/
|
||||
const CSRF_PARAM = 'csrf';
|
||||
|
||||
/**
|
||||
* Cadena utilizada como valor del atributo "id" de la etiqueta <form> asociada al formulario y como parámetro a comprobar para verificar que el usuario ha enviado el formulario.
|
||||
*/
|
||||
private $formId;
|
||||
|
||||
private $ajax;
|
||||
|
||||
/**
|
||||
* URL asociada al atributo "action" de la etiqueta <form> del fomrulario y que procesará el envío del formulario.
|
||||
*/
|
||||
private $action;
|
||||
|
||||
/**
|
||||
* Valor del atributo "class" de la etiqueta <form> asociada al formulario. Si este parámetro incluye la cadena "nocsrf" no se generá el token CSRF para este formulario.
|
||||
*/
|
||||
private $classAtt;
|
||||
|
||||
/**
|
||||
* Valor del parámetro enctype del formulario.
|
||||
*/
|
||||
private $enctype;
|
||||
|
||||
/**
|
||||
* Se encarga de orquestar todo el proceso de creación y procesamiento de un formulario web.
|
||||
*
|
||||
* @param string $formId Cadena utilizada como valor del atributo "id" de la etiqueta <form> asociada al formulario y como parámetro a comprobar para verificar que el usuario ha enviado el formulario.
|
||||
*
|
||||
* @param string $action (opcional) URL asociada al atributo "action" de la etiqueta <form> del fomrulario y que procesará el envío del formulario. Por defecto la URL es $_SERVER['PHP_SELF']
|
||||
*
|
||||
* @param string $class (opcional) Valor del atributo "class" de la etiqueta <form> asociada al formulario. Si este parámetro incluye la cadena "nocsrf" no se generá el token CSRF para este formulario.
|
||||
*
|
||||
* @param string enctype (opcional) Valor del parámetro enctype del formulario.
|
||||
*/
|
||||
public function __construct($formId, $opciones = array() ) {
|
||||
$this->formId = $formId;
|
||||
|
||||
$opcionesPorDefecto = array( 'ajax' => false, 'action' => null, 'class' => null, 'enctype' => null );
|
||||
$opciones = array_merge($opcionesPorDefecto, $opciones);
|
||||
|
||||
$this->ajax = $opciones['ajax'];
|
||||
$this->action = $opciones['action'];
|
||||
$this->classAtt = $opciones['class'];
|
||||
$this->enctype = $opciones['enctype'];
|
||||
|
||||
if ( !$this->action ) {
|
||||
$this->action = $_SERVER['PHP_SELF'];
|
||||
}
|
||||
}
|
||||
|
||||
public function gestiona() {
|
||||
|
||||
if ( ! $this->formularioEnviado($_POST) ) {
|
||||
echo $this->generaFormulario();
|
||||
} else {
|
||||
// Valida el token CSRF si es necesario (hay un token en la sesión asociada al formulario)
|
||||
$tokenRecibido = isset($_POST['CSRFToken']) ? $_POST['CSRFToken'] : FALSE;
|
||||
|
||||
if ( ($errores = $this->csrfguard_ValidateToken($this->formId, $tokenRecibido)) !== TRUE ) {
|
||||
if ( ! $this->ajax ) {
|
||||
echo $this->generaFormulario($errores, $_POST);
|
||||
} else {
|
||||
echo $this->generaHtmlErrores($errores);
|
||||
}
|
||||
} else {
|
||||
$result = $this->procesaFormulario($_POST);
|
||||
if ( is_array($result) ) {
|
||||
// Error al procesar el formulario, volvemos a mostrarlo
|
||||
if ( ! $this->ajax ) {
|
||||
echo $this->generaFormulario($result, $_POST);
|
||||
} else {
|
||||
echo $this->generaHtmlErrores($result);
|
||||
}
|
||||
} else {
|
||||
if ( ! $this->ajax ) {
|
||||
header('Location: '.$result);
|
||||
} else {
|
||||
echo $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve un <code>string</code> con el HTML necesario para presentar los campos del formulario. Es necesario asegurarse que como parte del envío se envía un parámetro con nombre <code$formId</code> (i.e. utilizado como valor del atributo name del botón de envío del formulario).
|
||||
*/
|
||||
protected function generaCamposFormulario ($datos) {
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Procesa los datos del formulario.
|
||||
*/
|
||||
protected function procesaFormulario($datos) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Función que verifica si el usuario ha enviado el formulario. Comprueba si existe el parámetro <code>$formId</code> en <code>$params</code>.
|
||||
*
|
||||
* @param array $params Array que contiene los datos recibidos en el envío formulario.
|
||||
*
|
||||
* @return boolean Devuelve <code>TRUE</code> si <code>$formId</code> existe como clave en <code>$params</code>
|
||||
*/
|
||||
private function formularioEnviado(&$params) {
|
||||
return isset($params['action']) && $params['action'] == $this->formId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Función que genera el HTML necesario para el formulario.
|
||||
*
|
||||
*
|
||||
* @param array $errores (opcional) Array con los mensajes de error de validación y/o procesamiento del formulario.
|
||||
*
|
||||
* @param array $datos (opcional) Array con los valores por defecto de los campos del formulario.
|
||||
*/
|
||||
private function generaFormulario($errores = array(), &$datos = array()) {
|
||||
|
||||
$html= $this->generaListaErrores($errores);
|
||||
|
||||
$html .= '<form method="POST" action="'.$this->action.'" id="'.$this->formId.'"';
|
||||
if ( $this->classAtt ) {
|
||||
$html .= ' class="'.$this->classAtt.'"';
|
||||
}
|
||||
if ( $this->enctype ) {
|
||||
$html .= ' enctype="'.$this->enctype.'"';
|
||||
}
|
||||
$html .=' >';
|
||||
|
||||
// Se genera el token CSRF si el usuario no solicita explícitamente lo contrario.
|
||||
if ( ! $this->classAtt || strpos($this->classAtt, 'nocsrf') === false ) {
|
||||
$tokenValue = $this->csrfguard_GenerateToken($this->formId);
|
||||
$html .= '<input type="hidden" name="CSRFToken" value="'.$tokenValue.'" />';
|
||||
}
|
||||
|
||||
$html .= '<input type="hidden" name="action" value="'.$this->formId.'" />';
|
||||
|
||||
$html .= $this->generaCamposFormulario($datos);
|
||||
$html .= '</form>';
|
||||
return $html;
|
||||
}
|
||||
|
||||
private function generaListaErrores($errores) {
|
||||
$html='';
|
||||
$numErrores = count($errores);
|
||||
if ( $numErrores == 1 ) {
|
||||
$html .= "<ul><li>".$errores[0]."</li></ul>";
|
||||
} else if ( $numErrores > 1 ) {
|
||||
$html .= "<ul><li>";
|
||||
$html .= implode("</li><li>", $errores);
|
||||
$html .= "</li></ul>";
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
private function csrfguard_GenerateToken($formId) {
|
||||
if ( ! isset($_SESSION) ) {
|
||||
throw new Exception('La sesión del usuario no está definida.');
|
||||
}
|
||||
|
||||
if ( function_exists('hash_algos') && in_array('sha512', hash_algos()) ) {
|
||||
$token = hash('sha512', mt_rand(0, mt_getrandmax()));
|
||||
} else {
|
||||
$token=' ';
|
||||
for ($i=0;$i<128;++$i) {
|
||||
$r=mt_rand(0,35);
|
||||
if ($r<26){
|
||||
$c=chr(ord('a')+$r);
|
||||
} else{
|
||||
$c=chr(ord('0')+$r-26);
|
||||
}
|
||||
$token.=$c;
|
||||
}
|
||||
}
|
||||
|
||||
$_SESSION[$formId.'_'.self::CSRF_PARAM]=$token;
|
||||
|
||||
return $token;
|
||||
}
|
||||
|
||||
private function csrfguard_ValidateToken($formId, $tokenRecibido) {
|
||||
if ( ! isset($_SESSION) ) {
|
||||
throw new Exception('La sesión del usuario no está definida.');
|
||||
}
|
||||
|
||||
$result = TRUE;
|
||||
|
||||
if ( isset($_SESSION[$formId.'_'.self::CSRF_PARAM]) ) {
|
||||
if ( $_SESSION[$formId.'_'.self::CSRF_PARAM] !== $tokenRecibido ) {
|
||||
$result = array();
|
||||
$result[] = 'Has enviado el formulario dos veces';
|
||||
}
|
||||
$_SESSION[$formId.'_'.self::CSRF_PARAM] = ' ';
|
||||
unset($_SESSION[$formId.'_'.self::CSRF_PARAM]);
|
||||
} else {
|
||||
$result = array();
|
||||
$result[] = 'Formulario no válido';
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
class Formulario {
|
||||
* Clase base para la gestión de formularios.
|
||||
*
|
||||
* Además de la gestión básica de los formularios.
|
||||
*/
|
||||
abstract class Form {
|
||||
|
||||
/**
|
||||
* @var string Cadena utilizada como valor del atributo "id" de la etiqueta <form> asociada al formulario y
|
||||
* como parámetro a comprobar para verificar que el usuario ha enviado el formulario.
|
||||
*/
|
||||
private $formId;
|
||||
private $action;
|
||||
private $classAtt;
|
||||
private $enctype;
|
||||
|
||||
public function __construct($formId, $opciones = array() ) {
|
||||
/**
|
||||
* @var string URL asociada al atributo "action" de la etiqueta <form> del fomrulario y que procesará el
|
||||
* envío del formulario.
|
||||
*/
|
||||
private $action;
|
||||
|
||||
/**
|
||||
* Crea un nuevo formulario.
|
||||
*
|
||||
* Posibles opciones:
|
||||
* <table>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Opción</th>
|
||||
* <th>Valor por defecto</th>
|
||||
* <th>Descripción</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>action</td>
|
||||
* <td><code>$_SERVER['PHP_SELF']</code></td>
|
||||
* <td>URL asociada al atributo "action" de la etiqueta <form> del fomrulario y que procesará el envío del formulario.</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
|
||||
* @param string $formId Identificador utilizado en el atributo "id" de la etiqueta <form> asociada al formulario y como parámetro
|
||||
* a comprobar para verificar que el usuario ha enviado el formulario.
|
||||
*
|
||||
* @param array $opciones (ver más arriba).
|
||||
*/
|
||||
public function __construct($formId, $opciones = array() )
|
||||
{
|
||||
$this->formId = $formId;
|
||||
$opcionesPorDefecto = array( 'ajax' => false, 'action' => null, 'class' => null,
|
||||
'enctype' => null );
|
||||
|
||||
$opcionesPorDefecto = array( 'action' => null, );
|
||||
$opciones = array_merge($opcionesPorDefecto, $opciones);
|
||||
|
||||
$this->ajax = $opciones['ajax'];
|
||||
$this->action = $opciones['action'];
|
||||
$this->classAtt = $opciones['class'];
|
||||
$this->enctype = $opciones['enctype'];
|
||||
|
||||
if (!$this->action) {
|
||||
$app = Aplicacion::getSingleton();
|
||||
$this->action = htmlspecialchars($_SERVER['REQUEST_URI']);
|
||||
$this->action = $app->resuelve($this->action);
|
||||
if ( !$this->action ) {
|
||||
$this->action = htmlentities($_SERVER['PHP_SELF']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Se encarga de orquestar todo el proceso de gestión de un formulario.
|
||||
*
|
||||
* El proceso es el siguiente:
|
||||
* <ul>
|
||||
* <li>O bien se quiere mostrar el formulario (petición GET)</li>
|
||||
* <li>O bien hay que procesar el formulario (petición POST) y hay dos situaciones:
|
||||
* <ul>
|
||||
* <li>El formulario se ha procesado correctamente y se devuelve un <code>string</code> en {@see Form::procesaFormulario()}
|
||||
* que será la URL a la que se rederigirá al usuario. Se redirige al usuario y se termina la ejecución del script.</li>
|
||||
* <li>El formulario NO se ha procesado correctamente (errores en los datos, datos incorrectos, etc.) y se devuelve
|
||||
* un <code>array</code> con entradas (campo, mensaje) con errores específicos para un campo o (entero, mensaje) si el mensaje
|
||||
* es un mensaje que afecta globalmente al formulario. Se vuelve a generar el formulario pasándole el array de errores.</li>
|
||||
* </ul>
|
||||
* </li>
|
||||
* </ul>
|
||||
*/
|
||||
public function gestiona()
|
||||
{
|
||||
if ( ! $this->formularioEnviado($_POST) ) {
|
||||
return $this->generaFormulario();
|
||||
} else {
|
||||
$result = $this->procesaFormulario($_POST);
|
||||
if ( is_array($result) ) {
|
||||
return $this->generaFormulario($_POST, $result);
|
||||
} else {
|
||||
header('Location: '.$result);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Genera el HTML necesario para presentar los campos del formulario.
|
||||
*
|
||||
* Si el formulario ya ha sido enviado y hay errores en {@see Form::procesaFormulario()} se llama a este método
|
||||
* nuevamente con los datos que ha introducido el usuario en <code>$datosIniciales</code> y los errores al procesar
|
||||
* el formulario en <code>$errores</code>
|
||||
*
|
||||
* @param string[] $datosIniciales Datos iniciales para los campos del formulario (normalmente <code>$_POST</code>).
|
||||
*
|
||||
* @param string[] $errores (opcional)Lista / Tabla asociativa de errores asociados al formulario.
|
||||
*
|
||||
* @return string HTML asociado a los campos del formulario.
|
||||
*/
|
||||
protected function generaCamposFormulario($datosIniciales, $errores = array())
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Procesa los datos del formulario.
|
||||
*
|
||||
* @param string[] $datos Datos enviado por el usuario (normalmente <code>$_POST</code>).
|
||||
*
|
||||
* @return string|string[] Devuelve el resultado del procesamiento del formulario, normalmente una URL a la que
|
||||
* se desea que se redirija al usuario, o un array con los errores que ha habido durante el procesamiento del formulario.
|
||||
*/
|
||||
protected function procesaFormulario($datos)
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Función que verifica si el usuario ha enviado el formulario.
|
||||
*
|
||||
* Comprueba si existe el parámetro <code>$formId</code> en <code>$params</code>.
|
||||
*
|
||||
* @param string[] $params Array que contiene los datos recibidos en el envío formulario.
|
||||
*
|
||||
* @return boolean Devuelve <code>true</code> si <code>$formId</code> existe como clave en <code>$params</code>
|
||||
*/
|
||||
private function formularioEnviado(&$params)
|
||||
{
|
||||
return isset($params['action']) && $params['action'] == $this->formId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Función que genera el HTML necesario para el formulario.
|
||||
*
|
||||
* @param string[] $datos (opcional) Array con los valores por defecto de los campos del formulario.
|
||||
*
|
||||
* @param string[] $errores (opcional) Array con los mensajes de error de validación y/o procesamiento del formulario.
|
||||
*
|
||||
* @return string HTML asociado al formulario.
|
||||
*/
|
||||
private function generaFormulario(&$datos = array(), &$errores = array())
|
||||
{
|
||||
$htmlCamposFormularios = $this->generaCamposFormulario($datos, $errores);
|
||||
|
||||
/* <<< Permite definir cadena en múltiples líneas.
|
||||
* Revisa https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
|
||||
*/
|
||||
$htmlForm = '<form method="POST" action="'.$this->action.'" id="'.$this->formId.'" >
|
||||
<input type="hidden" name="action" value="$this->formId" />
|
||||
'.$htmlCamposFormularios.'
|
||||
</form>';
|
||||
return $htmlForm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Genera la lista de mensajes de errores globales (no asociada a un campo) a incluir en el formulario.
|
||||
*
|
||||
* @param string[] $errores (opcional) Array con los mensajes de error de validación y/o procesamiento del formulario.
|
||||
*
|
||||
* @param string $classAtt (opcional) Valor del atributo class de la lista de errores.
|
||||
*
|
||||
* @return string El HTML asociado a los mensajes de error.
|
||||
*/
|
||||
protected static function generaListaErroresGlobales($errores = array(), $classAtt='')
|
||||
{
|
||||
$html='';
|
||||
$clavesErroresGenerales = array_filter(array_keys($errores), function ($elem) {
|
||||
return is_numeric($elem);
|
||||
});
|
||||
|
||||
$numErrores = count($clavesErroresGenerales);
|
||||
if ($numErrores > 0) {
|
||||
$html = "<ul class=\"$classAtt\">";
|
||||
if ( $numErrores == 1 ) {
|
||||
$html .= "<li>$errores[0]</li>";
|
||||
} else {
|
||||
foreach($clavesErroresGenerales as $clave) {
|
||||
$html .= "<li>$errores[$clave]</li>";
|
||||
}
|
||||
$html .= "</li>";
|
||||
}
|
||||
$html .= '</ul>';
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una etiqueta para mostrar un mensaje de error. Sólo creará el mensaje de error
|
||||
* si existe una clave <code>$idError</code> dentro del array <code>$errores</code>.
|
||||
*
|
||||
* @param string[] $errores (opcional) Array con los mensajes de error de validación y/o procesamiento del formulario.
|
||||
* @param string $idError (opcional) Clave dentro de <code>$errores</code> del error a mostrar.
|
||||
* @param string $htmlElement (opcional) Etiqueta HTML a crear para mostrar el error.
|
||||
* @param array $atts (opcional) Tabla asociativa con los atributos a añadir a la etiqueta que mostrará el error.
|
||||
*/
|
||||
protected static function createMensajeError($errores=array(), $idError='', $htmlElement='span', $atts = array())
|
||||
{
|
||||
$html = '';
|
||||
if (isset($errores[$idError])) {
|
||||
$att = '';
|
||||
foreach($atts as $key => $value) {
|
||||
$att .= "$key=$value";
|
||||
}
|
||||
$html = " <$htmlElement $att>{$errores[$idError]}</$htmlElement>";
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
}
|
||||
*/
|
||||
?>
|
@ -1,3 +1,83 @@
|
||||
<?php
|
||||
require_once('../assets/php/form.php');
|
||||
include_once('../assets/php/common/user.php');
|
||||
|
||||
?>
|
||||
class FormChangeName extends Form {
|
||||
|
||||
public function __construct() {
|
||||
$options = array("action" => "./?option=manage_profile");
|
||||
parent::__construct('formChangeUserName', $options);
|
||||
}
|
||||
|
||||
protected function generaCamposFormulario($datos, $errores = array()){
|
||||
$nombre = $datos['nombreUsuario'] ?? '';
|
||||
|
||||
// Se generan los mensajes de error si existen.
|
||||
$htmlErroresGlobales = self::generaListaErroresGlobales($errores);
|
||||
$errorNombre = self::createMensajeError($errores, 'nombre', 'span', array('class' => 'error'));
|
||||
$errorPassword = self::createMensajeError($errores, 'pass', 'span', array('class' => 'error'));
|
||||
$errorPassword2 = self::createMensajeError($errores, 'repass', 'span', array('class' => 'error'));
|
||||
|
||||
$html = '<div class="row">'.$htmlErroresGlobales.'
|
||||
<fieldset id="nombre_usuario">
|
||||
<legend>Nuevo Nombre de usuario</legend>
|
||||
<div class="_new_name">
|
||||
<input type="text" name="new_name" id="new_name" value="" placeholder="Nuevo Nombre" required/>
|
||||
</div>
|
||||
<div class="_passwd">
|
||||
<input type="password" name="pass" id="pass" value="" placeholder="Contraseña" required/>
|
||||
</div>
|
||||
<div class="_passwd">
|
||||
<input type="password" name="repass" id="repass" value="" placeholder="Repita la contraseña" required/>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="actions">
|
||||
<input type="submit" id="submit" value="Cambiar Nombre de Usuario" class="primary" />
|
||||
<input type="reset" id="reset" value="Borrar" />
|
||||
</div>
|
||||
</div>';
|
||||
return $html;
|
||||
}
|
||||
|
||||
|
||||
protected function procesaFormulario($datos){
|
||||
$result = array();
|
||||
|
||||
$nombre = $datos['new_name'] ?? null;
|
||||
if ( empty($nombre) || mb_strlen($nombre) < 5 ) {
|
||||
$result['new_name'] = "El nombre tiene que tener una longitud de al menos 5 caracteres.";
|
||||
}
|
||||
|
||||
$password = $datos['pass'] ?? null;
|
||||
if ( empty($password) || mb_strlen($password) < 5 ) {
|
||||
$result['pass'] = "El password tiene que tener una longitud de al menos 5 caracteres.";
|
||||
}
|
||||
$password2 = $datos['repass'] ?? null;
|
||||
if ( empty($password2) || strcmp($password, $password2) !== 0 ) {
|
||||
$result['repass'] = "Los passwords deben coincidir";
|
||||
}
|
||||
|
||||
if (count($result) === 0) {
|
||||
$bd = new UserDAO("complucine");
|
||||
$user = $bd->selectUser(unserialize($_SESSION['user'])->getName(), $password);
|
||||
if (!$user) {
|
||||
$result[] = "El usuario no existe.";
|
||||
} else {
|
||||
$bd->changeUserName(unserialize($_SESSION['user'])->getId(), $username);
|
||||
$user = $bd->selectUser($username, $password);
|
||||
if (!$user){
|
||||
$result[] = "Ha ocurrido un probrema al actualizar el nombre de usuario.";
|
||||
}else{
|
||||
$_SESSION['user'] = serialize($user);
|
||||
$_SESSION["nombre"] = $user->getName();
|
||||
$result = './?option=manage_profile';
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function test_input($input){
|
||||
return htmlspecialchars(trim(strip_tags($input)));
|
||||
}
|
||||
}
|
3
panel_user/includes/formChangePass.php
Normal file
3
panel_user/includes/formChangePass.php
Normal file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
?>
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
require_once($prefix.'assets/php/common/user_dto.php');
|
||||
require_once($prefix.'assets/php/common/user.php');
|
||||
|
||||
class UserPanel {
|
||||
//Atributes:
|
||||
@ -25,30 +25,19 @@
|
||||
|
||||
//Manage the user account.
|
||||
static function manage(){
|
||||
return $reply = '<div class="column side">
|
||||
<h2>Cambiar nombre de usuario</h2>
|
||||
<form method="post" action="./includes/formChangeName.php">
|
||||
<div class="row">
|
||||
<fieldset id="nombre_usuario">
|
||||
<legend>Nuevo Nombre de usuario</legend>
|
||||
<div class="_new_name">
|
||||
<input type="text" name="new_name" id="new_name" value="" placeholder="Nuevo Nombre" required/>
|
||||
</div>
|
||||
<div class="_passwd">
|
||||
<input type="password" name="pass" id="pass" value="" placeholder="Contraseña" required/>
|
||||
</div>
|
||||
<div class="_passwd">
|
||||
<input type="password" name="repass" id="repass" value="" placeholder="Repita la contraseña" required/>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="actions">
|
||||
<input type="submit" id="submit" value="Cambiar Nombre de Usuario" class="primary" />
|
||||
<input type="reset" id="reset" value="Borrar" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="column side">
|
||||
require_once('./includes/formChangePass.php');
|
||||
require_once('./includes/formChangeEmail.php');
|
||||
require_once('./includes/formChangeName.php');
|
||||
|
||||
$formCN = new FormChangeName();
|
||||
$htmlFormChangeName = $formCN->gestiona();
|
||||
|
||||
return $reply = '<!-- Change User Name -->
|
||||
<div class="column side">
|
||||
<h2>Cambiar nombre de usuario</h2>
|
||||
'.$htmlFormChangeName.'
|
||||
</div>
|
||||
<div class="column middle">
|
||||
<h2>Cambiar contraseña</h2>
|
||||
<form method="post" action="./includes/formChangePass.php">
|
||||
<div class="row">
|
||||
|
Loading…
Reference in New Issue
Block a user