fix(turnero): IP real con X-Forwarded-For; chat back solo para recepcionista
- App.php: clientIp() público resuelve X-Forwarded-For/X-Real-IP - module.php: usa el mismo IP resolution en sidebar de recepcionista - chat.php: botón Menú regresa al desk solo si rol=recepcionista con IP registrada; bacteriólogo no aplica lógica de IP en este flujo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
6f56734b53
commit
1f2198225c
@@ -9,6 +9,7 @@ $_trAdminRoles = ['superadmin', 'admin', 'supervisor'];
|
||||
$_trIsAdmin = in_array($_trRole, $_trAdminRoles, true);
|
||||
$_trIsRecep = $_trRole === 'recepcionista';
|
||||
$_trIsBacte = $_trRole === 'bacteriologo';
|
||||
$_trClientIp = trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['HTTP_X_REAL_IP'] ?? $_SERVER['REMOTE_ADDR'] ?? '')[0]);
|
||||
|
||||
try {
|
||||
$_trPdo = Database::getInstance()->getConnection();
|
||||
@@ -41,7 +42,7 @@ if ($_trIsRecep) {
|
||||
JOIN turnero_lugares l ON l.id = d.lugar_id
|
||||
WHERE d.ip = ? AND d.activo = 1 AND l.tipo = 'recepcion' LIMIT 1"
|
||||
);
|
||||
$_trRecepIpRow->execute([$_SERVER['REMOTE_ADDR'] ?? '']);
|
||||
$_trRecepIpRow->execute([$_trClientIp]);
|
||||
$_trRecepIpDesk = $_trRecepIpRow->fetchColumn() ?: null;
|
||||
} catch (\Throwable $_) {}
|
||||
|
||||
@@ -77,7 +78,7 @@ if ($_trIsRecep) {
|
||||
$_trIpRow = $_trPdo->prepare(
|
||||
"SELECT lugar_id FROM turnero_dispositivos WHERE ip = ? AND activo = 1 LIMIT 1"
|
||||
);
|
||||
$_trIpRow->execute([$_SERVER['REMOTE_ADDR'] ?? '']);
|
||||
$_trIpRow->execute([$_trClientIp]);
|
||||
$_trIpLugar = $_trIpRow->fetchColumn() ?: null;
|
||||
} catch (\Throwable $_) {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user