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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user