[Actualiza] los datos personales de un usuario en edición de perfil
This commit is contained in:
parent
e4cd061b03
commit
62f5bb55f0
|
@ -71,9 +71,9 @@ class profilesController {
|
|||
// Renderiza la página de edición de perfil
|
||||
// y actualiza los datos de perfil de un usuario con el método POST.
|
||||
static public function edit_profile() {
|
||||
if (empty($_POST['edit-profile-form'])) {
|
||||
utils::check_session(NABU_ROUTES['home']);
|
||||
utils::check_session(NABU_ROUTES['home']);
|
||||
|
||||
if (empty($_POST['edit-profile-form'])) {
|
||||
$profilesModel = new profilesModel();
|
||||
|
||||
// Obtiene los datos de perfil del usuario de sesión.
|
||||
|
@ -111,6 +111,92 @@ class profilesController {
|
|||
array('field' => 'username', 'trim' => true, 'min_length' => 1, 'max_length' => 255, 'optional' => true, 'not_spaces' => true),
|
||||
array('field' => 'password', 'min_length' => 6, 'max_length' => 255, 'not_spaces' => true, 'optional' => true, 'equal' => $_POST['confirm-password']),
|
||||
));
|
||||
|
||||
if (empty($data))
|
||||
utils::redirect(NABU_ROUTES['edit-profile']);
|
||||
|
||||
$id = $_SESSION['user']['id'];
|
||||
|
||||
$profilesModel = new profilesModel();
|
||||
|
||||
// Obtiene los datos de perfil actual del usuario.
|
||||
$profile = $profilesModel -> get('id', $id);
|
||||
|
||||
if (empty($profile))
|
||||
utils::redirect(NABU_ROUTES['logout']);
|
||||
|
||||
require_once 'models/usersModel.php';
|
||||
|
||||
$update = array();
|
||||
|
||||
// Valida si hay cambios en el nombre del usuario.
|
||||
if (isset($data['name']))
|
||||
if ($data['name'] != $profile['name']) {
|
||||
$update['name'] = $data['name'];
|
||||
|
||||
messages::add('Tu nombre completo se ha actualizado correctamente');
|
||||
}
|
||||
|
||||
// Valida si hay cambios en el apodo del usuario.
|
||||
if (isset($data['username']))
|
||||
if ($data['username'] != $profile['username']) {
|
||||
$usersModel = new usersModel();
|
||||
|
||||
$user = $usersModel -> get('username', $data['username']);
|
||||
|
||||
$success = 'Tu apodo se ha actualizado correctamente';
|
||||
$exists = 'Por favor define un apodo diferente';
|
||||
|
||||
// Valida si el apodo es único.
|
||||
if (empty($user)) {
|
||||
$update['username'] = $data['username'];
|
||||
|
||||
messages::add($success);
|
||||
}
|
||||
else {
|
||||
// Valida si es una cuenta inactiva.
|
||||
if (empty($user['activated']) && !empty($user['expiration'])) {
|
||||
// Valida si la autenticación está expirada.
|
||||
if (time() > $user['expiration']) {
|
||||
$usersModel -> delete($user['id']);
|
||||
|
||||
$update['username'] = $data['username'];
|
||||
|
||||
messages::add($success);
|
||||
}
|
||||
else
|
||||
messages::add($exists);
|
||||
}
|
||||
else
|
||||
messages::add($exists);
|
||||
}
|
||||
|
||||
unset($usersModel, $user);
|
||||
}
|
||||
|
||||
// Valida si hay cambios en la contraseña del usuario.
|
||||
if (isset($data['password'])) {
|
||||
$update['password'] = password_hash($data['password'], PASSWORD_DEFAULT, array('cost' => 12));
|
||||
|
||||
messages::add('Tu contraseña se ha actualizado correctamente');
|
||||
}
|
||||
|
||||
// Actualiza los datos del usuario en la base de datos.
|
||||
if (!empty($update)) {
|
||||
$usersModel = new usersModel();
|
||||
|
||||
$usersModel -> update($id, $update);
|
||||
|
||||
unset($usersModel);
|
||||
|
||||
// Actualiza la variable de sesión.
|
||||
if (isset($update['username']))
|
||||
$_SESSION['user']['username'] = $update['username'];
|
||||
|
||||
$update = array();
|
||||
}
|
||||
|
||||
utils::redirect(NABU_ROUTES['edit-profile']);
|
||||
}
|
||||
|
||||
static public function delete_profile() {
|
||||
|
|
|
@ -24,10 +24,10 @@ class usersController {
|
|||
// Renderiza la página de registro de usuarios
|
||||
// y registra usuarios con el método POST.
|
||||
static public function signup() {
|
||||
if (empty($_POST['signup-form'])) {
|
||||
// Redirecciona a "home" si existe una sesión de usuario.
|
||||
utils::session_exists(NABU_ROUTES['home']);
|
||||
// Redirecciona a "home" si existe una sesión de usuario.
|
||||
utils::session_exists(NABU_ROUTES['home']);
|
||||
|
||||
if (empty($_POST['signup-form'])) {
|
||||
$token = csrf::generate();
|
||||
$messages = messages::get();
|
||||
|
||||
|
@ -133,9 +133,9 @@ class usersController {
|
|||
// Renderiza la página de inicio de sesión
|
||||
// y asigna credenciales de acceso con el método POST.
|
||||
static public function login() {
|
||||
if (empty($_POST['login-form'])) {
|
||||
utils::session_exists(NABU_ROUTES['home']);
|
||||
utils::session_exists(NABU_ROUTES['home']);
|
||||
|
||||
if (empty($_POST['login-form'])) {
|
||||
$token = csrf::generate();
|
||||
$messages = messages::get();
|
||||
|
||||
|
|
|
@ -98,6 +98,26 @@ class usersModel extends dbConnection {
|
|||
}
|
||||
}
|
||||
|
||||
// Actualiza los datos de un usuario.
|
||||
public function update(int $id, array $data) {
|
||||
$columns = array_keys($data);
|
||||
$query = '';
|
||||
|
||||
foreach ($columns as $column)
|
||||
$query = $query . $column . ' = :' . $column . ', ';
|
||||
|
||||
$query = 'UPDATE users SET ' . rtrim($query, ', ') . ' WHERE id = :id';
|
||||
|
||||
$data['id'] = $id;
|
||||
|
||||
try {
|
||||
$this -> pdo -> prepare($query) -> execute($data);
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
$this -> errors($e -> getMessage(), 'tuvimos un problema para actualizar tus datos personales');
|
||||
}
|
||||
}
|
||||
|
||||
public function __destruct() {
|
||||
parent::__destruct();
|
||||
$this -> pdo = null;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
<?php defined('NABU') || exit() ?>
|
||||
|
||||
<?php $head_title = 'Crea una cuenta' ?>
|
||||
<?php $head_title = 'Registrate' ?>
|
||||
|
||||
<!-- Estilos a cargar -->
|
||||
<?php $styles = array(
|
||||
|
|
Loading…
Reference in a new issue