DEBUG FASE 2: Identificados problemas críticos en GetRow()

PROBLEMAS CRÍTICOS IDENTIFICADOS:
⚠️ GetRow() devuelve null siempre → empresaId = 0
⚠️ Warnings PHP en util.class.php:501 (acceso arrays nulos)
⚠️ Compatibilidad MockDatabase vs mysqli real

DATOS REALES ENCONTRADOS:
 admin@novomoda.com.mx → empresaId = 1
 sonia.velezquez@novomoda.com.mx → empresaId = 15
 gerente@novomoda.com.mx → empresaId = 15

ARCHIVOS NUEVOS:
- debug_login.php → Debug de base de datos master
- test_login_reales.php → Test con usuarios reales

ANÁLISIS:
- Usuarios existen en BD master
- Consultas SQL funcionan en debug
- GetRow() falla en DoLogin()

SIGUIENTE PASO: Revisar GetRow() en DB.class.php
This commit is contained in:
2026-01-07 18:43:28 -06:00
parent ee4945578e
commit 3b5bd9c0e9
9 changed files with 472 additions and 21 deletions

View File

@@ -377,16 +377,16 @@ $this->Util()->ValidateMail($value, "Email");
$generalDb = new DB(true);
// CAMBIO CRÍTICO: Obtener empresaId dinámicamente del usuario
// Buscar usuario por email y password sin filtrar por empresaId fijo
// Usar GetRow() en lugar de GetSingle() para obtener múltiples campos
$sql = "SELECT usuarioId, empresaId FROM usuario
WHERE email = '".$this->email."'
AND password = '".$this->password."'
AND baja = '0'";
$generalDb->setQuery($sql);
$result = $generalDb->GetSingle();
$result = $generalDb->GetRow();
// GetSingle puede devolver un string o array, manejar ambos casos
if(!$result)
// Validar que se encontró el usuario
if(!$result || !isset($result['usuarioId']))
{
unset($_SESSION["loginKey"]);
unset($_SESSION["empresaId"]);
@@ -396,24 +396,22 @@ $this->Util()->ValidateMail($value, "Email");
{
return false;
}
}
// Si result es array, obtener valores; si es string, es usuarioId viejo
if(is_array($result))
{
$usuarioId = $result['usuarioId'];
$empresaIdFromUser = $result['empresaId'];
}
else
{
// Compatibilidad con sistema antiguo - obtener empresaId separadamente
$usuarioId = $result;
$sql2 = "SELECT empresaId FROM usuario WHERE usuarioId = '".$usuarioId."'";
$generalDb->setQuery($sql2);
$empresaIdFromUser = $generalDb->GetSingle();
// Validar que $result no sea null antes de acceder
if($result === null) {
unset($_SESSION["loginKey"]);
unset($_SESSION["empresaId"]);
$this->Util()->setError(10006, "error");
if($this->Util()->PrintErrors()) {
return false;
}
}
// Obtener datos del usuario de forma segura
$usuarioId = isset($result['usuarioId']) ? $result['usuarioId'] : 0;
$empresaIdFromUser = isset($result['empresaId']) ? $result['empresaId'] : 0;
// Establecer el empresaId real del usuario
$this->empresaId = $empresaIdFromUser;
@@ -424,9 +422,9 @@ $this->Util()->ValidateMail($value, "Email");
$info = $generalDb->GetRow();
$_SESSION["loginKey"] = $usuarioId;
$_SESSION["idSuc"] = $info['sucursalId'];
$_SESSION["idSuc"] = isset($info['sucursalId']) ? $info['sucursalId'] : 0;
$_SESSION["empresaId"] = $this->empresaId;
$_SESSION["version"] = $info["version"];
$_SESSION["version"] = isset($info["version"]) ? $info["version"] : '';
return true;
}