Permissoes (RBAC)
Permissoes nomeadas no formato dominio.recurso.acao. Default: negar tudo. Wildcard final permitido: tributos.lancamento.*.
Modelo
Permissao— catalogo global (codigo unico)Perfil— agrega permissoes, escopado por municipioUsuario— recebe perfil por secretaria
Proteger uma rota
@Get('usuarios')
@RequirePermission('core.usuario.ler')
async listar() { ... }Revogacao (ADR 0011)
JWT carrega sv (sessionVersion) + pv[] (permissionVersion por perfil). Cada request o middleware compara contra Redis. Se versao subiu, retorna 401 e exige relogin.
Operacoes que invalidam JWTs
POST /auth/logout— bumpa sessionVersion do usuarioPUT /core/perfis/:id/permissoes— bumpa permissionVersion do perfil
REVOCATION_MODE (env)
fail_open— Redis offline libera request (default dev)fail_closed— Redis offline retorna 503 (default prod)