testes/nodejs/controllers/tokenController.js

19 lines
1.1 KiB
JavaScript

const jwt = require('../../Biblioteca/node_modules/jsonwebtoken'); // Importa a biblioteca JSON Web Token
const { jwtSecret, refreshTokenSecret } = require('../config/configuracao'); // Importa variáveis de configuração
const refreshTokens = []; // Array para armazenar tokens de atualização
// Controlador para renovar tokens JWT
const tokenController = (req, res) => {
const { token } = req.body; // Obtém o token de atualização do corpo da requisição
if (!token) return res.sendStatus(401); // Se não houver token, retorna erro 401
if (!refreshTokens.includes(token)) return res.sendStatus(403); // Se o token não estiver na lista, retorna erro 403
jwt.verify(token, refreshTokenSecret, (err, user) => {
if (err) return res.sendStatus(403); // Se o token for inválido, retorna erro 403
const accessToken = jwt.sign({ domain: user.domain }, jwtSecret, { expiresIn: '1h' }); // Gera um novo token de acesso
res.json({ accessToken }); // Retorna o novo token de acesso
});
};
module.exports = tokenController; // Exporta o controlador de token para ser