# ADR-001 — Identidade, autorização e acesso anónimo - Estado: Aceite para orientar contratos e novas alterações; não declara implementação completa. - Data: 2026-10-01 - Contexto: Laravel 13, Fortify e sessões existentes; API pública versionada e páginas Inertia. Não foi encontrado emissor/verificador JWT configurado. ## Decisão Usar a sessão Laravel como mecanismo primário para browser/Inertia e para operações privadas same-origin, com CSRF, verificação de email quando aplicável, MFA nas áreas já protegidas e autorização explícita por Policy/Gate para cada recurso. Endpoints anónimos são uma allowlist de leitura/submissão pública, com validação, limitação de pedidos e resposta mínima. A existência de uma rota sob `/api` não a torna pública. Não introduzir JWT nem bearer tokens sem consumidor externo, ciclo de vida, audiência, rotação e revogação contratados. Não confiar em IDs enviados pelo cliente para autorizar acesso. ## Alternativas consideradas - JWT para toda a aplicação: rejeitado; não há necessidade demonstrada e duplicaria a sessão existente. - Um gate global de gestor: insuficiente para autorização por recurso; manter as verificações actuais como barreira adicional, com Policies por domínio. - Tornar toda a API pública: rejeitado; publicar só operações explicitamente inventariadas. ## Consequências e validação futura Contratos devem declarar `security` por operação e casos anónimo/autenticado/negado. Privacidade SQL/RLS é decisão separada no ADR-007. Alterações futuras precisam de testes positivos e negativos. Esta ADR não converte o gate `manage-portal` em RBAC completo.