1
resposta

Resolvendo a duvida de usuarioId retornando undefined

Você precisa colocar o middleware de autenticação antes do middleware de autorização (roles) na sua rota. coloque um console.log(usuarioId) para verificar se está retornando o id! espero ter ajudado ;)

const { Router } = require('express')

const ProdutoController = require('../controllers/produtoController')

const roles = require('../middleware/roles')

const autenticar = require('../middleware/middleware')   <-- importa o middleware de autenticação

const router = Router()

router
  .post('/produto', ProdutoController.cadastrarProduto)

  //  AQUI: aplica autenticação antes de checar o role

  .get('/produto', autenticar, roles(['Gerente']), ProdutoController.buscarTodosProdutos)

  .get('/produto/id/:id', ProdutoController.buscarProdutoPorId)

  .delete('/produto/id/:id', ProdutoController.deletarProdutoPorId)

  .put('/produto/id/:id', ProdutoController.editarProduto)
1 resposta

Olá, Alexsandro! Tudo certo?

Excelente observação! É essencial que o middleware de autenticação venha antes do de autorização, como você apontou, pois precisamos garantir que o usuarioId esteja disponível e validado antes de verificar se ele possui determinada role.

A sugestão de incluir um console.log(usuarioId) também é muito útil para depurar e entender se o token foi decodificado corretamente e se as informações estão chegando no fluxo da requisição.

Continue compartilhando suas soluções, elas enriquecem demais o fórum e ajudam outros colegas que podem estar enfrentando situações semelhantes.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!