fix(clinics): 3 bugs de unicidade e wipe corrigidos
continuous-integration/webhook Deploy concluído (VPS4)
continuous-integration/webhook Deploy concluído (VPS4)
1. admin-clinics.js — bloqueia cadastro de clinic_name + pc_name duplicados: Antes só validava email único. Agora verifica se já existe dispositivo com a mesma combinação clinic_name + pc_name (case-insensitive). Sem isso, dois PCs com mesmo nome na mesma clínica sobrescreveriam arquivos um do outro no Wasabi (caminho idêntico). 2. admin-clinics.js — wipe usava client_name ao invés de clinic_name no banco: 'DELETE FROM images WHERE client_name = clinic_name' deletava o conjunto errado de imagens (client_name é o nome do PC, não da clínica). Corrigido para 'WHERE clinic_name = $1'. Wasabi continua usando sanitize(clinic_name)/ como prefixo (correto). 3. server.js — verificação de duplicata no connect incluía clinicName: O check usava só clientName (pc_name), causando falso positivo: dois PCs de clínicas diferentes com o mesmo nome (ex: ambos "PC-SALA-1") — o segundo era desconectado. Agora verifica clinicName + clientName juntos. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -865,11 +865,14 @@ io.on('connection', (socket) => {
|
||||
|
||||
// Se autenticado via machine_token, o pc_name do cadastro é autoritativo
|
||||
const clientName = (socket.user?.pcName || data.name || 'PC não identificado').trim();
|
||||
const clientId = data.clientId || '';
|
||||
|
||||
// 1. Validar unicidade em relação aos clientes já conectados
|
||||
const duplicate = connectedClients.find(c =>
|
||||
c.name.toLowerCase() === clientName.toLowerCase() &&
|
||||
const clientId = data.clientId || '';
|
||||
const clinicName = socket.user?.clinicName || (data.clinicName || '').trim() || 'Clínica não identificada';
|
||||
|
||||
// 1. Validar unicidade: mesmo PC da mesma clínica já conectado (clientId diferente)
|
||||
// Usa clinicName + clientName para não bloquear PCs homônimos de clínicas diferentes.
|
||||
const duplicate = connectedClients.find(c =>
|
||||
c.name.toLowerCase() === clientName.toLowerCase() &&
|
||||
c.clinicName.toLowerCase() === clinicName.toLowerCase() &&
|
||||
c.clientId !== clientId
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user