conn = Database::getInstance(); } /** * Registrar un nuevo usuario * @param string $usuario Nombre de usuario * @param string $contrasena Contraseña del usuario * @return array */ public function crearUsuario($usuario, $contrasena){ // Hashear contraseña $contrasena_hash = password_hash($contrasena, PASSWORD_DEFAULT); $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 ' . $usuario . ' registrado exitosamente.' ]; } public function actualizarUsuario($id, $usuario, $contrasena){ // Hashear contraseña $contrasena_hash = password_hash($contrasena, PASSWORD_DEFAULT); $stmt = $this->conn->prepare("UPDATE usuario SET usuario = ?, contrasena = ? WHERE id = ?"); $stmt->bind_param("ssi", $usuario, $contrasena_hash, $id); if (!$stmt->execute()) { return [ 'estado' => 'error', 'mensaje' => 'Error al actualizar usuario: ' . $stmt->error ]; } $stmt->close(); return [ 'estado' => 'exitoso', 'mensaje' => 'Usuario ' . $usuario .' actualizado 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 buscarUsuario($usuario) { $stmt = $this->conn->prepare("SELECT id, usuario FROM usuario WHERE usuario = ?"); $stmt->bind_param("s", $usuario); if (!$stmt->execute()) { return [ 'estado' => 'error', 'mensaje' => 'Error al verificar usuario: ' . $stmt->error ]; } $stmt->store_result(); // Si no hay resultados, retornar un array con estado y mensaje if ($stmt->num_rows == 0) { return [ 'estado' => 'exitoso', 'mensaje' => 'No existe el usuario.' ]; } else { $stmt->bind_result($id, $usuario); $stmt->fetch(); return [ 'estado' => 'exitoso', 'mensaje' => 'Usuario existe.', 'id' => $id, 'usuario' => $usuario ]; } } 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.' ]; } } ?>