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ção | Tipo | Descrição |
|---|---|---|
roles | string[] | Roles que podem acessar. Omitir = qualquer usuário autenticado |
audit | string | Registra 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.