feat: adiciona rota verify-client-credentials para o client
This commit is contained in:
@@ -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
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user