feat: consolidate backend improvements, frontend UX fixes and Wasabi storage support

This commit is contained in:
VPS 4 Deploy Agent
2026-05-30 15:23:27 +02:00
parent de3bbc9564
commit 6dfce6723b
21 changed files with 2312 additions and 361 deletions
+17 -2
View File
@@ -72,13 +72,28 @@ router.post('/verify-client-credentials', async (req, res) => {
// Obter a API KEY do ambiente ou usar uma padrão (fallback local temporário)
const serverApiKey = process.env.CLIENT_API_KEY || 'rf-dental-secure-key-2026';
// Se o usuário mandou apenas o Token/API Key (fluxo do Client Windows)
if (token) {
if (token === serverApiKey) {
return res.json({ success: true, message: 'API Key válida' });
}
// Se não for a API Key padrão, tentamos verificar se é um JWT
// Verificar se é um machine_token (UUID tem hífen)
if (email && password && token.includes('-')) {
console.log(`[AUTH] Tentando validar machine_token: ${token} para email: ${email}`);
const device = await db.get(`SELECT * FROM clinics_devices WHERE machine_token = $1`, [token]);
if (device && device.email === email && device.is_active) {
const validPassword = await verifyPassword(password, device.password_hash);
console.log(`[AUTH] validPassword=${validPassword}`);
if (validPassword) {
return res.json({ success: true, message: 'Machine Token e Credenciais válidas', clinic: { name: device.clinic_name, pc: device.pc_name } });
}
} else {
console.log(`[AUTH] Falha: device=${!!device}, is_active=${device?.is_active}`);
}
return res.status(401).json({ error: 'Credenciais da clínica ou Token inválidos' });
}
// Se não for a API Key padrão nem machine_token, tentamos verificar se é um JWT
try {
const jwt = require('jsonwebtoken');
const { JWT_SECRET } = require('../auth');