Olá, Ricardo! Como vai?
Você está correto!
Na sua aplicação, a rota de cadastro de usuários precisa ser uma rota pública, pois é a partir dela que um usuário será criado e poderá receber um token para acessar as outras rotas que exigem autenticação.
No código que você compartilhou, a middleware de autenticação está sendo aplicada a todas as rotas, incluindo a rota de cadastro de usuários. Para resolver isso, você pode aplicar a middleware de autenticação apenas nas rotas que precisam dela, em vez de aplicá-la globalmente.
Aqui está um exemplo de como você pode fazer isso:
const { Router } = require('express')
const UsuarioController = require('../controllers/usuarioController')
const autenticado = require('../middleware/autenticado')
const router = Router()
router
.post('/usuarios', UsuarioController.cadastrar) // rota pública
.get('/usuarios', autenticado, UsuarioController.buscarTodosUsuarios) // rota protegida
.get('/usuarios/id/:id', autenticado, UsuarioController.buscarUsuarioPorId) // rota protegida
.put('/usuarios/id/:id', autenticado, UsuarioController.editarUsuario) // rota protegida
.delete('/usuarios/id/:id', autenticado, UsuarioController.deletarUsuario) // rota protegida
module.exports = router
Nesse exemplo, a middleware autenticado
é aplicada apenas nas rotas que seguem a rota de cadastro de usuários. Dessa forma, a rota de cadastro de usuários não exigirá um token de autenticação, mas as outras rotas sim.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.