* [Implenta] confirmación de contraseñas para eliminar artículos.

* [Actualiza] mensajes en los modelos.
This commit is contained in:
Ricardo García Jiménez 2022-02-17 14:54:05 -06:00
parent 12e781557a
commit a3e66c6794
8 changed files with 104 additions and 26 deletions

View file

@ -23,8 +23,8 @@ require_once 'models/adminModel.php';
class adminController {
private const limit = 10;
// Renderiza la página de administración para aprobar un artículo
// y realiza búsquedas con el método POST.
// Renderiza la página de administración con la lista de artículos
// en espera de aprobación y realiza búsquedas con el método POST.
static public function approve_articles() {
$max = 246;
$search = utils::validate_search(NABU_ROUTES['approve-articles'], $max);
@ -54,10 +54,10 @@ class adminController {
// Renderiza la página de administración para editar un artículo
// y actualiza los datos de un artículo con el método POST.
static public function review_article() {
$validations = new validations(NABU_ROUTES['approve-articles']);
$messages = messages::get();
$validations = new validations(NABU_ROUTES['approve-articles']);
// Valida la URL del artículo.
$data = $validations -> validate($_GET, array(
array('field' => 'slug', 'min_length' => 1, 'max_length' => 255)
@ -92,7 +92,7 @@ class adminController {
$form = array_merge($_POST, $_FILES);
// Valida el formulario para actualizar los datos de un artículo.
// Valida el formulario que actualiza los datos de un artículo.
$data = $validations -> validate($form, array(
array('field' => 'cover', 'type' => 'image', 'optional' => true),
array('field' => 'title', 'trim_all' => true, 'min_length' => 1, 'max_length' => 246),
@ -159,10 +159,62 @@ class adminController {
// Renderiza la página para eliminar un artículo.
static public function delete_article() {
$token = csrf::generate();
$messages = messages::get();
require_once 'views/pages/confirm-password.php';
$validations = new validations(NABU_ROUTES['approve-articles']);
// Valida la URL del artículo.
$data = $validations -> validate($_GET, array(
array('field' => 'slug', 'min_length' => 1, 'max_length' => 255)
));
$slug = $data['slug'];
$view = NABU_ROUTES['delete-article'] . '&slug=' . $slug;
if (empty($_POST['confirm-password-form'])) {
unset($validations, $data, $slug);
$token = csrf::generate();
require_once 'views/pages/confirm-password.php';
exit();
}
csrf::validate($_POST['csrf']);
$validations -> route = $view;
// Valida el formulario para confirmar la contraseña del usuario.
$data = $validations -> validate($_POST, array(
array('field' => 'password', 'min_length' => 6, 'max_length' => 255, 'not_spaces' => true, 'equal' => $_POST['confirm-password'])
));
$adminModel = new adminModel();
$id = $_SESSION['user']['id'];
$admin = $adminModel -> get_admin($id);
if (empty($admin))
utils::redirect(NABU_ROUTES['logout']);
// Valida la contraseña del usuario.
if (!password_verify($data['password'], $admin['password'])) {
messages::add('La contraseña es incorrecta');
utils::redirect($view);
}
// Obtiene los datos del artículo.
$article = $adminModel -> get_article($slug);
if (empty($article))
utils::redirect(NABU_ROUTES['approve-articles']);
messages::add('El artículo se ha eliminado corractamente');
utils::redirect(NABU_ROUTES['approve-articles']);
}
// Renderiza la página para autorizar la publicación de un artículo.

View file

@ -260,7 +260,7 @@ class profilesController {
$validations = new validations($view);
// Valida el formulario para eliminar una cuenta de usuario.
// Valida el formulario para confirmar la contraseña del usuario.
$data = $validations -> validate($_POST, array(
array('field' => 'password', 'min_length' => 6, 'max_length' => 255, 'not_spaces' => true, 'equal' => $_POST['confirm-password'])
));

View file

@ -213,9 +213,11 @@ class usersController {
messages::check($view);
$role = $user['role'];
// Redirecciona al panel de administración en base al role.
if ($user['role'] == 'admin')
utils::redirect(NABU_ROUTES['admin']);
if ($role == 'admin' || $role == 'moderator')
utils::redirect(NABU_ROUTES['approve-articles']);
// Redirecciona al perfil del usuario.
utils::redirect(NABU_ROUTES['profile'] . '&user=' . urlencode($user['username']));

View file

@ -77,7 +77,7 @@ class adminModel extends dbConnection {
return $articles;
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para mostrar los artículos en espera de aprobación');
$this -> errors($e -> getMessage(), 'tuvimos un problema para listar los artículos en espera de aprobación');
}
}
@ -109,7 +109,7 @@ class adminModel extends dbConnection {
return $prepare -> fetch();
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para buscar la portada del artículo');
$this -> errors($e -> getMessage(), 'tuvimos un problema para buscar la portada de un artículo');
}
}
@ -129,7 +129,31 @@ class adminModel extends dbConnection {
$this -> pdo -> prepare($query) -> execute($data);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para actualizar los datos del artículo');
$this -> errors($e -> getMessage(), 'tuvimos un problema para actualizar los datos de un artículo');
}
}
// @return los datos de un usuario administrador.
public function get_admin(int $id) {
$query = 'SELECT id, role_id AS role, username, email, password FROM users '.
'WHERE id = ? AND activated = TRUE AND (role_id = 1 OR role_id = 2)';
try {
$prepare = $this -> pdo -> prepare($query);
$prepare -> execute(array($id));
$user = $prepare -> fetch();
if (empty($user))
return array();
$user['role'] = $this -> role($user['role']);
return $user;
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para obtener los datos de un usuario administrador');
}
}

View file

@ -37,7 +37,7 @@ class articlesModel extends dbConnection {
return $article;
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para validar si tu publicación es única');
$this -> errors($e -> getMessage(), 'tuvimos un problema para obtener el identificador de un artículo');
}
}
@ -50,7 +50,7 @@ class articlesModel extends dbConnection {
$this -> pdo -> prepare($query) -> execute($data);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para registrar tu publicación');
$this -> errors($e -> getMessage(), 'tuvimos un problema para registrar una publicación');
}
}

View file

@ -31,7 +31,7 @@ class authenticationModel extends dbConnection {
$this -> pdo -> prepare($query) -> execute($authentication);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para registrar tu clave de verificación de dirección de correo electrónico');
$this -> errors($e -> getMessage(), 'tuvimos un problema para registrar una clave de verificación de dirección de correo electrónico');
}
}
@ -54,7 +54,7 @@ class authenticationModel extends dbConnection {
return $user;
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para validar tu dirección de correo electrónico');
$this -> errors($e -> getMessage(), 'tuvimos un problema para obtener los datos de autenticación de dirección de correo electrónico');
}
}
@ -72,7 +72,7 @@ class authenticationModel extends dbConnection {
$this -> pdo -> prepare($query_profile) -> execute($id);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para activar tu cuenta de usuario');
$this -> errors($e -> getMessage(), 'tuvimos un problema para activar una cuenta de usuario');
}
}

View file

@ -37,7 +37,7 @@ class profilesModel extends dbConnection {
return $prepare -> fetch();
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para mostrar los datos de tu perfil');
$this -> errors($e -> getMessage(), 'tuvimos un problema para obtener los datos de perfil de un usuario');
}
}
@ -57,7 +57,7 @@ class profilesModel extends dbConnection {
$this -> pdo -> prepare($query) -> execute($data);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para actualizar los datos de tu perfil');
$this -> errors($e -> getMessage(), 'tuvimos un problema para actualizar los datos de perfil de un usuario');
}
}
@ -73,7 +73,7 @@ class profilesModel extends dbConnection {
return $prepare -> fetch();
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para buscar tus imágenes de perfil');
$this -> errors($e -> getMessage(), 'tuvimos un problema para buscar las imágenes de perfil de un usuario');
}
}
@ -89,7 +89,7 @@ class profilesModel extends dbConnection {
$this -> pdo -> prepare($query_disable) -> execute($id);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para eliminar tu cuenta de usuario');
$this -> errors($e -> getMessage(), 'tuvimos un problema para eliminar el perfil de un usuario');
}
}

View file

@ -43,7 +43,7 @@ class usersModel extends dbConnection {
return $users;
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para validar si tu apodo y dirección de correo electrónico son únicos');
$this -> errors($e -> getMessage(), 'tuvimos un problema para obtener los datos de varios usuarios');
}
}
@ -68,7 +68,7 @@ class usersModel extends dbConnection {
$this -> pdo -> prepare($query) -> execute($data);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para registrar tu cuenta de usuario');
$this -> errors($e -> getMessage(), 'tuvimos un problema para registrar una cuenta de usuario');
}
}
@ -94,7 +94,7 @@ class usersModel extends dbConnection {
return $user;
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para validar si tu apodo y dirección de correo electrónico son únicos');
$this -> errors($e -> getMessage(), 'tuvimos un problema para obtener los datos de un usuario');
}
}
@ -114,7 +114,7 @@ class usersModel extends dbConnection {
$this -> pdo -> prepare($query) -> execute($data);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para actualizar tus datos personales');
$this -> errors($e -> getMessage(), 'tuvimos un problema para actualizar los datos personales de un usuario');
}
}