Pular para o conteúdo principal

defineRoutes

Para endpoints além do CRUD gerado automaticamente, use defineRoutes. Ele entrega um roteador com autenticação e RBAC embutidos — sem precisar configurar middlewares manualmente.

Assinatura

const { defineRoutes } = require("@oondemand/oon-core-back");

defineRoutes("/prefixo", (router) => {
// router.private.* → autenticado + RBAC
// router.public.* → sem autenticação
});

Rotas privadas

src/routes/relatorios.js
const { defineRoutes } = require("@oondemand/oon-core-back");

defineRoutes("/relatorios", (router) => {
router.private.get(
"/resumo-mensal",
{ roles: ["admin", "gestor"] },
async (req, res) => {
const resumo = await calcularResumoMensal(req.query.mes);
res.json(resumo);
}
);

router.private.post(
"/exportar",
{ roles: ["admin"], audit: "relatorio-exportado" },
async (req, res) => {
const arquivo = await gerarPlanilha(req.body);
res.download(arquivo);
}
);
});

Rotas públicas

defineRoutes("/public", (router) => {
router.public.get("/status", (req, res) => {
res.json({ ok: true });
});
});

Opções de rota privada

OpçãoTipoDescrição
rolesstring[]Roles que podem acessar. Omitir = qualquer usuário autenticado
auditstringRegistra a ação no log de auditoria com essa label

Acesso ao usuário autenticado

O middleware de auth popula req.user com o payload do JWT:

router.private.get("/meu-perfil", async (req, res) => {
const { tipo, nome, email } = req.user;
res.json({ tipo, nome, email });
});
dica

defineRoutes nunca expõe um express.Router() cru. Use sempre router.private.* ou router.public.* para garantir o contrato de segurança do Core.