99 lines
3.2 KiB
PHP
99 lines
3.2 KiB
PHP
|
<?php
|
||
|
//======================================================================
|
||
|
// Clase para gestionar la base de datos
|
||
|
//======================================================================
|
||
|
class DB
|
||
|
{
|
||
|
//-----------------------------------------------------
|
||
|
// Variables
|
||
|
//-----------------------------------------------------
|
||
|
private $file = 'login.sqlite';
|
||
|
private $myPDO = null;
|
||
|
|
||
|
//-----------------------------------------------------
|
||
|
// Constructor
|
||
|
//-----------------------------------------------------
|
||
|
function __construct()
|
||
|
{
|
||
|
$hostPDO = "sqlite:$this->file";
|
||
|
$this->myPDO = new PDO($hostPDO);
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------
|
||
|
// GET
|
||
|
//-----------------------------------------------------
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------
|
||
|
// Métodos
|
||
|
//-----------------------------------------------------
|
||
|
/**
|
||
|
* Método que comprueba si el usuario y la contraseña se encuentra en un usuario
|
||
|
* @param {string} $email - Email
|
||
|
* @param {string} $password - Contraseña
|
||
|
* @return {bool}
|
||
|
*/
|
||
|
public function validarUsuario(string $email, string $password): bool
|
||
|
{
|
||
|
$miConsulta = $this->myPDO->prepare('SELECT password FROM users WHERE email = :email AND active != 0');
|
||
|
$miConsulta->execute([
|
||
|
'email' => $email
|
||
|
]);
|
||
|
$resultado = $miConsulta->fetch();
|
||
|
// Existe el usuario
|
||
|
if ($resultado) {
|
||
|
// Comprobamos la contrasenya si es válida
|
||
|
return password_verify($password, $resultado['password']);
|
||
|
} else {
|
||
|
return False;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Método que actualizar el token del usuario
|
||
|
* @param {string} $email - Email
|
||
|
* @param {string} $token - Token
|
||
|
* @return {bool}
|
||
|
*/
|
||
|
public function actualizarToken(string $email, string $token): bool
|
||
|
{
|
||
|
$miUpdate = $this->myPDO->prepare('UPDATE users SET token = :token WHERE email = :email');
|
||
|
return $miUpdate->execute([
|
||
|
'email' => $email,
|
||
|
'token' => $token
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Método que verifica si existe el email en la base de datos
|
||
|
* @param {string} $email - Email
|
||
|
* @return {bool}
|
||
|
*/
|
||
|
public function comprobarExisteCorreo(string $email): bool
|
||
|
{
|
||
|
$miSelect = $this->myPDO->prepare('SELECT COUNT(*) as cantidad FROM users WHERE email = :email AND active != 0');
|
||
|
$miSelect->execute([
|
||
|
'email' => $email
|
||
|
]);
|
||
|
$resultados = $miSelect->fetch();
|
||
|
return (int) $resutados['cantidad'] !== 0;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Método que verifica si existe el token
|
||
|
* @param {string} $token - Token
|
||
|
* @param {string} $email - Email
|
||
|
* @return {bool}
|
||
|
*/
|
||
|
public function comprobarToken(string $token, string $email): bool
|
||
|
{
|
||
|
$miSelect = $this->myPDO->prepare('SELECT COUNT(*) as cantidad FROM users WHERE email = :email AND active != 0 AND token = :token');
|
||
|
$miSelect->execute([
|
||
|
'token' => $token,
|
||
|
'email' => $email
|
||
|
]);
|
||
|
$resultados = $miSelect->fetch();
|
||
|
return (int) $resutados['cantidad'] !== 0;
|
||
|
}
|
||
|
}
|