Pular para o conteúdo principal

ADR 0001 — Guard JWT global com opt-out @Public()

  • Status: Aceite
  • Data: 2026-03

Contexto

A API mistura rotas de negócio (empresas, operacional, presença) com poucas rotas realmente anónimas (health, login, register, reset, portal). Esquecer um @UseGuards(JwtAuthGuard) numa rota nova seria um furo de autenticação.

Decisão

Registar JwtAuthGuard como APP_GUARD global. Rotas anónimas marcam-se explicitamente com @Public().

O JWT exige sub. Contexto de tenant: claim tenantId/tid ou cabeçalho x-tenant-id.

Consequências

  • Positivo: novas rotas ficam autenticadas por omissão; o risco é o contrário (alguém marcar @Public() sem necessidade).
  • Negativo: health/login/reset têm de lembrar o decorator; revisão de PRs deve procurar @Public() novo.
  • Follow-up: catálogo em apis/00-visao-geral.md.