✅ FASE 2 COMPLETADA: Login dinámico funcionando perfectamente
ÉXITOS ALCANZADOS: ✅ Eliminado hardcodeo empresaId = 15 en ajax/login.php ✅ Método DoLogin() corregido para obtener empresaId dinámico ✅ Conexión a BD real (evita MockDatabase problemático) ✅ Lógica de BD dinámica: empresaId=1→ventas_nm, empresaId>1→ventas_nm{id} TESTS VERIFICADOS: ✅ admin@novomoda.com.mx → empresaId:1 → BD:ventas_nm ✅ sonia.velezquez@novomoda.com.mx → empresaId:15 → BD:ventas_nm15 ✅ gerente@novomoda.com.mx → empresaId:15 → BD:ventas_nm15 CAMBIOS PRINCIPALES: - classes/empresa.class.php: DoLogin() con DatabaseManager - classes/system-config.class.php: Lógica BD dinámica - ajax/login.php: Eliminado hardcodeo - md/plan-accion-multi-empresa.md: Actualizado con éxito PRÓXIMO: Fase 3 - Actualización de módulos restantes
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
require_once 'main.class.php';
|
||||
require_once 'database-manager.class.php';
|
||||
|
||||
class Empresa extends Main
|
||||
{
|
||||
protected $username;
|
||||
@@ -374,19 +377,30 @@ $this->Util()->ValidateMail($value, "Email");
|
||||
|
||||
function DoLogin()
|
||||
{
|
||||
$generalDb = new DB(true);
|
||||
// CAMBIO CRÍTICO: Usar DatabaseManager para conexión real (evitar MockDatabase)
|
||||
$dbManager = DatabaseManager::getInstance();
|
||||
$masterConnection = $dbManager->getMasterConnection();
|
||||
|
||||
// CAMBIO CRÍTICO: Obtener empresaId dinámicamente del usuario
|
||||
// Usar GetRow() en lugar de GetSingle() para obtener múltiples campos
|
||||
// Verificar conexión real
|
||||
if ($masterConnection->connect_error) {
|
||||
unset($_SESSION["loginKey"]);
|
||||
unset($_SESSION["empresaId"]);
|
||||
$this->Util()->setError(10006, "error");
|
||||
if($this->Util()->PrintErrors()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// CAMBIO CRÍTICO: Obtener empresaId dinámicamente del usuario con BD real
|
||||
$sql = "SELECT usuarioId, empresaId FROM usuario
|
||||
WHERE email = '".$this->email."'
|
||||
AND password = '".$this->password."'
|
||||
AND baja = '0'";
|
||||
$generalDb->setQuery($sql);
|
||||
$result = $generalDb->GetRow();
|
||||
|
||||
$result = $masterConnection->query($sql);
|
||||
|
||||
// Validar que se encontró el usuario
|
||||
if(!$result || !isset($result['usuarioId']))
|
||||
if(!$result || !($row = $result->fetch_assoc()))
|
||||
{
|
||||
unset($_SESSION["loginKey"]);
|
||||
unset($_SESSION["empresaId"]);
|
||||
@@ -396,30 +410,22 @@ $this->Util()->ValidateMail($value, "Email");
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 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;
|
||||
$usuarioId = $row['usuarioId'];
|
||||
$empresaIdFromUser = $row['empresaId'];
|
||||
|
||||
// Establecer el empresaId real del usuario
|
||||
$this->empresaId = $empresaIdFromUser;
|
||||
|
||||
$sql = "SELECT * FROM usuario
|
||||
// Obtener información adicional del usuario
|
||||
$sql2 = "SELECT * FROM usuario
|
||||
LEFT JOIN empresa ON usuario.empresaId = empresa.empresaId
|
||||
WHERE usuarioId = '".$usuarioId."'";
|
||||
$generalDb->setQuery($sql);
|
||||
$info = $generalDb->GetRow();
|
||||
$result2 = $masterConnection->query($sql2);
|
||||
$info = $result2 ? $result2->fetch_assoc() : [];
|
||||
|
||||
$_SESSION["loginKey"] = $usuarioId;
|
||||
$_SESSION["idSuc"] = isset($info['sucursalId']) ? $info['sucursalId'] : 0;
|
||||
|
||||
Reference in New Issue
Block a user