Files
api-impresiones/routes/login.js
T
2025-05-22 18:33:00 -04:00

45 lines
1.5 KiB
JavaScript

const express = require('express');
const router = express.Router();
const pool = require('../db');
const loginValidator = require('../validators/loginValidator');
const handleValidation = require('../middleware/handleValidation');
const envConfig = require('../envConfigurations/EnvConfigurations');
const jwt = require('jsonwebtoken');
router.post('/',
handleValidation,
loginValidator,
async (req, res) => {
const { user, password } = req.body;
try {
const [results] = await pool.query(
'SELECT a.id_usuario , a.usuario , a.password , b.id_perfil , perfil FROM usuario a JOIN perfil b ON (a.id_perfil = b.id_perfil) WHERE a.usuario = ? AND a.password = ? AND a.activo = 1;',
[user, password]
)
if (results.length === 0) {
return res.status(404).json({ error: 'Usuario o contraseña incorrectos' });
}
const userData = results[0];
const payload = {
id_usuario: userData.id_usuario,
usuario: userData.usuario,
perfil: userData.perfil,
id_perfil: userData.id_perfil,
};
const token = jwt.sign(payload, envConfig.jwtSecret, {
expiresIn: '14h',
});
res.json({ token: token });
} catch (err) {
res.status(500).json({ error: 'Error al consultar: ' + err.message });
}
});
module.exports = router;
//IO