File "UsuarioModel.php"
Full Path: C:/wamp64/www/Seleccion/node_modules/safer-buffer/UsuarioModel.php
File size: 5.23 KB
MIME-type: text/x-php
Charset: utf-8
<?php
// models/UsuarioModel.php
class Usuario {
private $conn;
private $table = 'usuarios';
public $id;
public $cedula;
public $password;
public $nombre;
public $rol;
public function __construct($db) {
$this->conn = $db;
}
// Función para validar login con contraseñas en TEXTO PLANO
public function autenticar($cedula, $password) {
try {
// Query para buscar por cédula
$query = "SELECT id, cedula, password, nombre, rol
FROM " . $this->table . "
WHERE cedula = :cedula
LIMIT 1";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(':cedula', $cedula);
$stmt->execute();
if($stmt->rowCount() > 0) {
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// ✅ COMPARACIÓN EN TEXTO PLANO (sin encriptar)
// Comparamos directamente la contraseña ingresada con la de la BD
if($password === $row['password']) {
$this->id = $row['id'];
$this->cedula = $row['cedula'];
$this->nombre = $row['nombre'];
$this->rol = $row['rol'];
return true;
}
// Si quieres agregar logging para debug:
error_log("Intento de login fallido para cédula: " . $cedula);
} else {
error_log("Cédula no encontrada: " . $cedula);
}
return false;
} catch(PDOException $e) {
error_log("Error en autenticación: " . $e->getMessage());
return false;
}
}
// ⚠️ FUNCIÓN PARA MIGRAR A CONTRASEÑAS SEGURAS (OPCIONAL)
// Usa esto cuando quieras empezar a encriptar las contraseñas
public function migrarAPasswordHash($cedula, $passwordActual) {
try {
// Primero verificar que la contraseña actual es correcta
$query = "SELECT id, password FROM " . $this->table . " WHERE cedula = :cedula LIMIT 1";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(':cedula', $cedula);
$stmt->execute();
if($stmt->rowCount() > 0) {
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// Si la contraseña actual coincide
if($passwordActual === $row['password']) {
// Crear hash seguro
$hashedPassword = password_hash($passwordActual, PASSWORD_DEFAULT);
// Actualizar en la base de datos
$updateQuery = "UPDATE " . $this->table . "
SET password = :password
WHERE id = :id";
$updateStmt = $this->conn->prepare($updateQuery);
$updateStmt->bindParam(':password', $hashedPassword);
$updateStmt->bindParam(':id', $row['id']);
return $updateStmt->execute();
}
}
return false;
} catch(PDOException $e) {
error_log("Error al migrar contraseña: " . $e->getMessage());
return false;
}
}
// Función para crear un nuevo usuario con contraseña en texto plano
public function crear($cedula, $nombre, $password, $rol = 'admin') {
try {
$query = "INSERT INTO " . $this->table . "
(cedula, nombre, password, rol)
VALUES (:cedula, :nombre, :password, :rol)";
$stmt = $this->conn->prepare($query);
// ⚠️ GUARDANDO EN TEXTO PLANO (coincide con tu BD actual)
// Si quieres guardar encriptado, usa: $hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$stmt->bindParam(':cedula', $cedula);
$stmt->bindParam(':nombre', $nombre);
$stmt->bindParam(':password', $password); // Texto plano
$stmt->bindParam(':rol', $rol);
if($stmt->execute()) {
return $this->conn->lastInsertId();
}
return false;
} catch(PDOException $e) {
error_log("Error al crear usuario: " . $e->getMessage());
return false;
}
}
// Función para actualizar contraseña (texto plano)
public function actualizarPassword($cedula, $nuevaPassword) {
try {
$query = "UPDATE " . $this->table . "
SET password = :password
WHERE cedula = :cedula";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(':password', $nuevaPassword); // Texto plano
$stmt->bindParam(':cedula', $cedula);
return $stmt->execute();
} catch(PDOException $e) {
error_log("Error al actualizar contraseña: " . $e->getMessage());
return false;
}
}
}
?>