. */ defined('NABU') || exit(); class authenticationModel extends dbConnection { public function __construct() { parent::__construct(); } // Registra el hash de autenticación de e-mail con tiempo de expiración de un usuario. public function save_authentication(array $authentication) { $query = 'INSERT INTO authentications(id, hash, expiration) ' . 'VALUES(:id, :hash, :expiration)'; try { $this -> pdo -> prepare($query) -> execute($authentication); } catch (PDOException $e) { $this -> errors($e -> getMessage(), 'tuvimos un problema para registrar una clave de verificación de dirección de correo electrónico'); } } // @return un array asociativo con los datos de autenticación de e-mail de un usuario. public function get_authentication(string $username) { $query = 'SELECT u.id, u.email, u.activated, a.hash, a.expiration ' . 'FROM users AS u LEFT JOIN authentications AS a ON u.id = a.id ' . 'WHERE u.username = ? LIMIT 1'; try { $prepare = $this -> pdo -> prepare($query); $prepare -> execute(array($username)); $user = $prepare -> fetch(); if (empty($user)) $user = array(); return $user; } catch (PDOException $e) { $this -> errors($e -> getMessage(), 'tuvimos un problema para obtener los datos de autenticación de dirección de correo electrónico'); } } // Activa la cuenta, elimina la autenticación y crea el perfil de un usuario. public function activate_account(int $id) { $query_activate = 'UPDATE users SET activated = TRUE WHERE id = ?'; $query_delete = 'DELETE FROM authentications WHERE id = ?'; $query_profile = 'INSERT INTO profiles(id) VALUES(?)'; $id = array($id); try { $this -> pdo -> prepare($query_activate) -> execute($id); $this -> pdo -> prepare($query_delete) -> execute($id); $this -> pdo -> prepare($query_profile) -> execute($id); } catch (PDOException $e) { $this -> errors($e -> getMessage(), 'tuvimos un problema para activar una cuenta de usuario'); } } public function __destruct() { parent::__destruct(); $this -> pdo = null; } }