From c26247d637b874d7efe5feaaaba941bec82ea4b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Garc=C3=ADa=20Jim=C3=A9nez?= Date: Sun, 26 Sep 2021 22:04:37 -0500 Subject: [PATCH] =?UTF-8?q?[Implementa]=20b=C3=BAsqueda=20de=20usuarios=20?= =?UTF-8?q?y=20role=5Fformat=20se=20cambia=20a=20connection.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/usersController.php | 2 ++ database/connection.php | 15 +++++++++++++++ models/usersModel.php | 34 +++++++++++++++++++++------------ 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/controllers/usersController.php b/controllers/usersController.php index 36bf1d6..5a9e826 100644 --- a/controllers/usersController.php +++ b/controllers/usersController.php @@ -38,6 +38,8 @@ class usersController { $usersModel = new usersModel(); + $users = $usersModel -> find($data['username'], $data['email']); + // Genera una llave aleatoria de verificación de dirección de e-mail. $key = bin2hex(random_bytes(32)); diff --git a/database/connection.php b/database/connection.php index 67de10f..62b848e 100644 --- a/database/connection.php +++ b/database/connection.php @@ -57,6 +57,21 @@ class connection { messages::errors('¡Lo sentimos mucho! 😞, ' . $error . ', por favor inténtelo más tarde', 500); } + // @return el alias de un 'id de role'. + protected function role_format($id) { + $role = 'user'; + + if ($id == 1) { + $role = 'admin'; + } + + if ($id == 2) { + $role = 'moderator'; + } + + return $role; + } + // Finaliza la conexión con la base de datos. public function __destruct() { $this -> pdo = null; diff --git a/models/usersModel.php b/models/usersModel.php index d814888..a8f75b9 100644 --- a/models/usersModel.php +++ b/models/usersModel.php @@ -7,19 +7,29 @@ class usersModel extends connection { parent::__construct(); } - // @return el alias de un 'id de role'. - private function role_format($id) { - $role = 'user'; + // @return un lista de arrays asociativos con los datos de usuarios. + public function find(string $username, string $email) { + $query = 'SELECT u.id, u.role_id AS role, u.username, u.email, u.password, u.activated, u.creation_date,' . + 'v.hash, v.expiration AS hash_expiration FROM users AS u ' . + 'LEFT JOIN verifications AS v on u.id = v.id ' . + 'WHERE u.username = ? OR u.email = ? LIMIT 2'; - if ($id == 1) { - $role = 'admin'; + try { + $prepare = $this -> pdo -> prepare($query); + + $prepare -> execute(array($username, $email)); + + $users = $prepare -> fetchAll(); + + if (empty($users)) { + return array(); + } + + return $users; } - - if ($id == 2) { - $role = 'moderator'; + catch(PDOException $e) { + $this -> errors($e -> getMessage(), 'tuvimos un problema para validar si tu apodo y dirección de correo electrónico son únicos'); } - - return $role; } // Registra un nuevo usuario. @@ -35,12 +45,12 @@ class usersModel extends connection { } } - // Obtiene los datos de un solo usuario. + // @return un array asociativo con los datos de un solo usuario. public function get(string $column, $pattern) { $query = 'SELECT u.id, u.role_id AS role, u.username, u.email, u.password, u.activated, u.creation_date,' . 'v.hash, v.expiration AS hash_expiration FROM users AS u ' . 'LEFT JOIN verifications AS v on u.id = v.id ' . - 'WHERE ' . $column . ' = ? LIMIT 1'; + 'WHERE u.' . $column . ' = ? LIMIT 1'; try { $prepare = $this -> pdo -> prepare($query);