45 lines
1.5 KiB
JavaScript
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
|