85 lines
2.5 KiB
PHP
85 lines
2.5 KiB
PHP
<?php
|
|
|
|
require_once __DIR__ . '/../database/database.php';
|
|
|
|
class logInModel {
|
|
|
|
private $db;
|
|
|
|
// ESTABLECER CONECCIÓN CON BASE DE DATOS
|
|
|
|
public function __construct() {
|
|
$this->db = Database::getConnection(); // Guardamos el objeto PDO en $db
|
|
}
|
|
|
|
// BUSCAR USUARIO
|
|
|
|
public function buscarPorUsuario($usuario) {
|
|
|
|
$sql = "SELECT * FROM usuarios WHERE (usuario = :usuario) AND (usuarios.activo = true) LIMIT 1"; // LIMIT 1, más que nada por seguridad u optimizacón. :usuario es reemplazado luego con el valor real
|
|
|
|
$stmt = $this->db->prepare($sql); // Uso de prepare para evitar SQL Injection
|
|
|
|
$stmt->bindParam(':usuario', $usuario, PDO::PARAM_STR); // Asocia la variable $usuario con el placeholder :usuario en la consulta.
|
|
|
|
$stmt->execute(); // Ejecuta la consulta ya preparada con los parámetros vinculados
|
|
|
|
return $stmt->fetch(PDO::FETCH_ASSOC); // Obtiene la primera fila del resultado como un array asociativo
|
|
}
|
|
|
|
// INVALIDAR POR USUARIO
|
|
|
|
public function invalidarPorUsuario(int $id): bool {
|
|
|
|
$sql = "UPDATE recuperacion_cuenta
|
|
SET usado = 1
|
|
WHERE (id_usuario = :id_usuario)";
|
|
|
|
$stmt = $this->db->prepare($sql);
|
|
|
|
return $stmt->execute([':id_usuario' => $id]);
|
|
}
|
|
|
|
// CREAR RECUPERACIÓN
|
|
|
|
public function crear(array $data): bool {
|
|
|
|
$sql = "INSERT INTO recuperacion_cuenta (id_usuario, codigo, expira_a, usado) VALUES (:id_usuario, :codigo, :expira_a, 0)";
|
|
|
|
$stmt = $this->db->prepare($sql);
|
|
|
|
return $stmt->execute([
|
|
':id_usuario' => $data['id_usuario'],
|
|
':codigo' => $data['codigo'],
|
|
':expira_a' => $data['expira_a']
|
|
]);
|
|
}
|
|
|
|
// OBTENER ÚLTIMO CÓDIGO VÁLIDO
|
|
|
|
public function obtenerCodigoValido(int $idUsuario): ?array {
|
|
|
|
$sql = "SELECT id, codigo, expira_a, usado FROM recuperacion_cuenta
|
|
WHERE (id_usuario = :id_usuario) AND (usado = 0)
|
|
ORDER BY id DESC LIMIT 1";
|
|
|
|
$stmt = $this->db->prepare($sql);
|
|
|
|
$stmt->execute([':id_usuario' => $idUsuario]);
|
|
|
|
return $stmt->fetch(PDO::FETCH_ASSOC) ?: null;
|
|
}
|
|
|
|
// MARCAR COMO USADO
|
|
|
|
public function marcarComoUsado(int $id): bool {
|
|
|
|
$sql = "UPDATE recuperacion_cuenta
|
|
SET usado = 1
|
|
WHERE id = :id";
|
|
|
|
$stmt = $this->db->prepare($sql);
|
|
|
|
return $stmt->execute([':id' => $id]);
|
|
}
|
|
} |