Minha dúvida reside no argumento que será recebido pela função criarTokenJWT. Explicitamente, essa função deverá receber um "usuario" como argumento, até aqui tudo ok. Contudo, quando eu for chamar essa função dentro do objeto Access, dentro da função cria(id) podemos observar que a função cria() recebe um argumento "id", Durante o curso de refresh token, o professor informa que devemos alterar o argumento na função "criaTokenJWT(usuario)" e que agora ela deverá receber um "id" como argumento. A minha dúvida é, por que precisamos alterar o argumento da função criaTokenJWT e deixa-la igual ao argumento que será recebida na função cria()? Pensei em um paralelo com linguagens fortemente tipadas e lá, antes de passarmos uma variável como argumento para um método precisamos saber se essa variavel é do mesmo tipo do argumento que será recebido. Contudo, em javascript, nao existe um tipo predefinido...
const jwt = require('jsonwebtoken');
const allowlistRefreshToken = require('../../redis/allowlist-refresh-token');
const crypto = require('crypto');
const moment = require('moment');
function criaTokenJWT(usuario) {
const payload = {
id: usuario.id
};
const token = jwt.sign(payload, process.env.CHAVE_JWT, { expiresIn: '30s' });
return token;
}
async function criaTokenOpaco(usuario){
const tokenOpaco = crypto.randomBytes(24).toString('hex');
const dataExpiracao = moment().add(5, 'd').unix();
await allowlistRefreshToken.adiciona(tokenOpaco, usuario.id, dataExpiracao);
return tokenOpaco;
}
module.exports = {
access: {
cria(id) {
return criaTokenJWT();
}
},
refresh: {
cria(id) {
}
}
}