[Elimina] el perfil y la cuenta de un usuario

This commit is contained in:
Ricardo García Jiménez 2022-01-25 01:38:03 -06:00
parent aaafe0899c
commit 535d3ad122
3 changed files with 45 additions and 5 deletions

View file

@ -73,11 +73,13 @@ class profilesController {
static public function edit_profile() {
utils::check_session(NABU_ROUTES['home']);
$id = $_SESSION['user']['id'];
if (empty($_POST['edit-profile-form'])) {
$profilesModel = new profilesModel();
// Obtiene los datos de perfil del usuario de sesión.
$profile = $profilesModel -> get('id', $_SESSION['user']['id']);
$profile = $profilesModel -> get('id', $id);
unset($profilesModel);
@ -119,8 +121,6 @@ class profilesController {
if (empty($data))
utils::redirect($view);
$id = $_SESSION['user']['id'];
$profilesModel = new profilesModel();
// Obtiene los datos de perfil actual del usuario.
@ -274,6 +274,30 @@ class profilesController {
));
$id = $_SESSION['user']['id'];
$profilesModel = new profilesModel();
$profile = $profilesModel -> get('id', $id);
if (empty($profile))
utils::redirect(NABU_ROUTES['logout']);
// Valida la contraseña del usuario.
if (!password_verify($data['password'], $profile['password'])) {
messages::add('La contraseña es incorrecta');
utils::redirect($view);
}
// Elimina la foto de perfil.
utils::remove_image('avatar', $profile['avatar']);
// Elimina el fondo de perfil.
utils::remove_image('background', $profile['background']);
// Elimina el perfil y desactiva la cuenta del usuario.
$profilesModel -> delete($id);
utils::redirect(NABU_ROUTES['logout']);
}
static public function favorites() {

View file

@ -25,7 +25,7 @@ class profilesModel extends dbConnection {
// @return un array asociativo con los datos de perfil de un usuario.
public function get(string $column, $pattern) {
$query = 'SELECT u.name, u.username, p.avatar, p.background, p.description '.
$query = 'SELECT u.name, u.username, u.password, p.avatar, p.background, p.description '.
'FROM users AS u INNER JOIN profiles AS p ON u.id = p.id ' .
'WHERE u.' . $column . ' = ? LIMIT 1';
@ -77,6 +77,22 @@ class profilesModel extends dbConnection {
}
}
// Elimina el perfil de un usuario y desactiva su cuenta.
public function delete(int $id) {
$query_delete = 'DELETE FROM profiles WHERE id = ?';
$query_disable = 'UPDATE users SET email = NULL, activated = FALSE WHERE id = ?';
$id = array($id);
try {
$this -> pdo -> prepare($query_delete) -> execute($id);
$this -> pdo -> prepare($query_disable) -> execute($id);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para eliminar tu cuenta de usuario');
}
}
public function __destruct() {
parent::__destruct();
$this -> pdo = null;

View file

@ -25,7 +25,7 @@ class usersModel extends dbConnection {
// @return una lista de arrays asociativos con los datos de los usuarios.
public function find(string $username, string $email) {
$query = 'SELECT u.id, u.username, u.email, u.password, u.activated, u.registration_date,' .
$query = 'SELECT u.id, u.username, u.email, u.password, u.activated, ' .
'a.hash, a.expiration FROM users AS u ' .
'LEFT JOIN authentications AS a ON u.id = a.id ' .
'WHERE u.username = ? OR u.email = ? LIMIT 2';