// authenticação do usuário module.exports = { eUser: async (req, res, next) => { try { const token = req.headers['x-login_info'] // console.log(token) if (!token) { return res.status(401).json( { message: 'Token inválido' })//Não possui token } const blacklist = await blacklist_token.findAll({ where: { Token: token } }) if (blacklist.length > 0) { return res.status(403).json({ message: 'Token cadastrado na blacklist' }) } const decode = await promisify(jwt.verify)(token, tokentrue) return next() } catch (error) { return res.status(401).json({ message: 'Falha ao se autenticar ' + error })//Token inválido } }, // Verifica se é supervisor, caso contrário bloqueia acesso. Supervisor: async (req, res, next) => { const token = req.headers['x-login_info'] const decode = await promisify(jwt.verify)(token, tokentrue) if (decode.Role.toUpperCase() != 'SUPERVISOR') { return res.status(401).json({ Permission: 'Usuário sem permissão.' }) } else { return next() } } // FAZ LOGIN E RETORNA SEM LOCALSTORAGE O TOKEN router.post('/login', async (req, res) => { try { const isEmail = await usuarios.findAll({ where: { Email: req.body.email } }) if (isEmail.length < 1) { return res.status(401).json({ message: 'E-mail e/ou Senha inválidos!' }); } bcrypt.compare(req.body.password, isEmail[0].Password, (erro, result) => { if (erro) { return res.status(401).json({ message: 'E-mail e/ou Senha inválidos!' }); } if (result) { const token = jwt.sign({ // nome: isEmail[0].Name, Email: isEmail[0].Email, Role: isEmail[0].Role }, tokentrue, { expiresIn: '3h' }) return res.status(200).json({ message: 'Autenticado com sucesso!', token: token }); } return res.status(401).json({ message: 'E-mail e/ou Senha inválidos!' }) }) } catch (error) { return res.status(401).json({ message: 'E-mail e/ou Senha inválidos!' }) } })