LANIA_Proyecto/models/UsuarioModel.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.'
];
}
}
?>