feat: adiciona rota verify-client-credentials para o client

This commit is contained in:
VPS 4 Builder
2026-05-28 04:05:05 +02:00
parent d5b4ce9442
commit de3bbc9564
+48
View File
@@ -61,6 +61,54 @@ router.post('/login', async (req, res) => {
} }
}); });
// ================================================================
// POST /api/auth/verify-client-credentials - Verificar credenciais do client
// ================================================================
router.post('/verify-client-credentials', async (req, res) => {
try {
const { email, password, token } = req.body;
// 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
try {
const jwt = require('jsonwebtoken');
const { JWT_SECRET } = require('../auth');
const decoded = jwt.verify(token, JWT_SECRET);
if (decoded) {
return res.json({ success: true, message: 'JWT válido' });
}
} catch (e) {
return res.status(401).json({ error: 'Token ou API Key inválidos' });
}
}
// Fallback se não mandou token mas mandou email/senha (Não é o padrão atual do client, mas por segurança)
if (email && password) {
const user = await db.get('SELECT * FROM users WHERE email = $1 OR username = $2', [email, email]);
if (user) {
const validPassword = await verifyPassword(password, user.password_hash);
if (validPassword) {
return res.json({ success: true, message: 'Credenciais válidas' });
}
}
}
res.status(401).json({ error: 'Credenciais inválidas ou ausentes' });
} catch (error) {
console.error('Erro na validação do client:', error);
res.status(500).json({ error: 'Erro interno do servidor' });
}
});
// ================================================================ // ================================================================
// GET /api/auth/verify - Verificar token // GET /api/auth/verify - Verificar token
// ================================================================ // ================================================================