124 lines
3.5 KiB
PHP
124 lines
3.5 KiB
PHP
<?php
|
|
|
|
require_once __DIR__ . '/../config/Database.php';
|
|
|
|
class UsuarioModel {
|
|
private $conn;
|
|
|
|
public function __construct() {
|
|
$this->conn = Database::getInstance();
|
|
}
|
|
|
|
/**
|
|
* Registrar un nuevo usuario
|
|
* @param string $usuario Nombre de usuario
|
|
* @param string $contrasena Contraseña del usuario
|
|
* @return array
|
|
*/
|
|
public function registrarUsuario($usuario, $contrasena){
|
|
// Hashear contraseña
|
|
$contrasena_hash = password_hash($contrasena, PASSWORD_DEFAULT);
|
|
|
|
// Preparar la consulta mysql usando msqli
|
|
$stmt = $this->conn->prepare("INSERT INTO usuario (usuario, contrasena) VALUES (?, ?)");
|
|
$stmt->bind_param("ss", $usuario, $contrasena_hash);
|
|
if (!$stmt->execute()) {
|
|
return [
|
|
'estado' => 'error',
|
|
'mensaje' => 'Error al registrar usuario: ' . $stmt->error
|
|
];
|
|
}
|
|
|
|
$stmt->close();
|
|
return [
|
|
'estado' => 'exitoso',
|
|
'mensaje' => 'Usuario registrado exitosamente.'
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Iniciar sesión de un usuario
|
|
* @param string $usuario Nombre de usuario
|
|
* @param string $contrasena Contraseña del usuario
|
|
* @return array
|
|
*/
|
|
public function iniciarSesion($usuario, $contrasena) {
|
|
$stmt = $this->conn->prepare("SELECT contrasena FROM usuario WHERE usuario = ?");
|
|
$stmt->bind_param("s", $usuario);
|
|
if (!$stmt->execute()) {
|
|
return [
|
|
'estado' => 'error',
|
|
'mensaje' => 'Error al iniciar sesión, intentelo más tarde.',
|
|
'res' => $stmt->error
|
|
];
|
|
}
|
|
|
|
$stmt->store_result();
|
|
if ($stmt->num_rows == 0) {
|
|
return [
|
|
'estado' => 'error',
|
|
'mensaje' => 'Usuario o contraseña incorrectos.'
|
|
];
|
|
}
|
|
|
|
$stmt->bind_result($contrasena_hash);
|
|
$stmt->fetch();
|
|
|
|
if (password_verify($contrasena, $contrasena_hash)){
|
|
return [
|
|
'estado' => 'exitoso',
|
|
'mensaje' => 'Inicio de sesión exitoso.'
|
|
];
|
|
} else {
|
|
return [
|
|
'estado' => 'error',
|
|
'mensaje' => 'Usuario o contraseña incorrectos.'
|
|
];
|
|
}
|
|
}
|
|
|
|
public function obtenerUsuarios() {
|
|
// Preparar la consulta mysql usando msqli
|
|
$stmt = $this->conn->prepare("SELECT id, usuario FROM usuario");
|
|
if (!$stmt->execute()) {
|
|
return [
|
|
'estado' => 'error',
|
|
'mensaje' => 'Error al obtener usuarios: ' . $stmt->error
|
|
];
|
|
}
|
|
|
|
// Obtener el resultado
|
|
$result = $stmt->get_result();
|
|
|
|
// Si no hay resultados, retornar un array con estado y mensaje
|
|
if ($result->num_rows == 0) {
|
|
return [
|
|
'estado' => 'error',
|
|
'mensaje' => 'No hay usuarios registrados.'
|
|
];
|
|
}
|
|
|
|
return $result->fetch_all(MYSQLI_ASSOC);
|
|
}
|
|
|
|
public function eliminarUsuario($id){
|
|
$stmt = $this->conn->prepare("DELETE FROM usuario WHERE id = ?");
|
|
$stmt->bind_param("i", $id);
|
|
|
|
if (!$stmt->execute()) {
|
|
return [
|
|
'estado' => 'error',
|
|
'mensaje' => 'Error al eliminar usuario: ' . $stmt->error
|
|
];
|
|
}
|
|
|
|
$stmt->close();
|
|
return [
|
|
'estado' => 'exitoso',
|
|
'mensaje' => 'Usuario eliminado exitosamente.'
|
|
];
|
|
}
|
|
|
|
}
|
|
|
|
?>
|