Facebook
From Ivory Baboon, 1 Year ago, written in JavaScript.
Embed
Download Paste or View Raw
Hits: 125
  1.  
  2.  
  3. // authenticação do usuário
  4.  
  5. module.exports = {
  6.     eUser: async (req, res, next) => {
  7.  
  8.         try {
  9.             const token = req.headers['x-login_info']
  10.             // console.log(token)
  11.             if (!token) {
  12.                 return res.status(401).json(
  13.                     {
  14.                         message: 'Token inválido'
  15.                     })//Não possui token
  16.             }
  17.  
  18.             const blacklist = await blacklist_token.findAll({
  19.                 where: { Token: token }
  20.             })
  21.  
  22.             if (blacklist.length > 0) {
  23.                 return res.status(403).json({
  24.                     message: 'Token cadastrado na blacklist'
  25.                 })
  26.             }
  27.  
  28.             const decode = await promisify(jwt.verify)(token, tokentrue)
  29.  
  30.             return next()
  31.         } catch (error) {
  32.             return res.status(401).json({
  33.                 message: 'Falha ao se autenticar ' + error
  34.             })//Token inválido
  35.         }
  36.     },
  37.       // Verifica se é supervisor, caso contrário bloqueia acesso.
  38.     Supervisor: async (req, res, next) => {
  39.  
  40.         const token = req.headers['x-login_info']
  41.  
  42.         const decode = await promisify(jwt.verify)(token, tokentrue)
  43.  
  44.         if (decode.Role.toUpperCase() != 'SUPERVISOR') {
  45.             return res.status(401).json({
  46.                 Permission: 'Usuário sem permissão.'
  47.             })
  48.         } else {
  49.             return next()
  50.         }
  51.  
  52.     }
  53.      
  54.      
  55.      
  56.      
  57.       // FAZ LOGIN E RETORNA SEM LOCALSTORAGE O TOKEN
  58.       router.post('/login', async (req, res) => {
  59.  
  60.     try {
  61.         const isEmail = await usuarios.findAll({
  62.             where: { Email: req.body.email }
  63.         })
  64.  
  65.         if (isEmail.length < 1) {
  66.             return res.status(401).json({
  67.                 message: 'E-mail e/ou Senha inválidos!'
  68.             });
  69.         }
  70.  
  71.         bcrypt.compare(req.body.password, isEmail[0].Password, (erro, result) => {
  72.             if (erro) {
  73.                 return res.status(401).json({
  74.                     message: 'E-mail e/ou Senha inválidos!'
  75.                 });
  76.             }
  77.  
  78.             if (result) {
  79.                 const token = jwt.sign({
  80.                     // nome: isEmail[0].Name,
  81.                     Email: isEmail[0].Email,
  82.                     Role: isEmail[0].Role
  83.                 }, tokentrue, {
  84.                     expiresIn: '3h'
  85.                 })
  86.  
  87.                 return res.status(200).json({
  88.                     message: 'Autenticado com sucesso!',
  89.                     token: token
  90.                 });
  91.             }
  92.             return res.status(401).json({
  93.                 message: 'E-mail e/ou Senha inválidos!'
  94.             })
  95.         })
  96.     } catch (error) {
  97.         return res.status(401).json({
  98.             message: 'E-mail e/ou Senha inválidos!'
  99.         })
  100.     }
  101. })