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
|
||||
// ================================================================
|
||||
|
||||
Reference in New Issue
Block a user