feat: harden identity and recovery operations

This commit is contained in:
2026-08-04 20:24:18 +01:00
parent 7a4ac48aaf
commit eae2a44f46
30 changed files with 1428 additions and 21 deletions

View File

@@ -42,6 +42,11 @@ Todas as alterações materiais são registadas neste ficheiro. O formato segue
- Relatórios operacionais, métricas por dimensão e exportação CSV detalhada.
- Consulta de auditoria filtrável e paginada para administradores e auditores.
- Modelos editáveis para email e notificações internas com variáveis funcionais.
- Login Microsoft Entra/OIDC de tenant único com descoberta dinâmica, PKCE, `state`, `nonce` e validação RS256 do `id_token`.
- Associação e remoção explícitas da identidade Microsoft nas definições de segurança, com histórico de login e auditoria.
- Endpoints públicos de liveness/readiness sem divulgação de detalhes internos e health check do Nginx.
- Scripts operacionais para backup PostgreSQL custom, checksum e teste de restauro numa base temporária isolada.
- Checklist versionado de entrada em produção com evidências e critérios de go/no-go.
### Alterado
@@ -59,6 +64,8 @@ Todas as alterações materiais são registadas neste ficheiro. O formato segue
- Registo público desativado.
- Variáveis para tokens Snipe-IT separados e credenciais Entra ID documentadas sem valores.
- A associação Microsoft exige autenticação local e confirmação recente da palavra-passe; coincidências de email nunca associam contas automaticamente.
- Tokens OIDC não são persistidos ou registados e o redirect URI tem de usar HTTPS em produção.
- Rotas operacionais protegidas por Gate e verificação de perfil também no serviço de domínio; escritas externas não fazem retry automático.
- Exportação CSV neutraliza células iniciadas por caracteres de fórmula e limita cada relatório a 366 dias.
- Gestão administrativa impede auto-desativação e garante pelo menos um administrador ativo.
@@ -66,7 +73,7 @@ Todas as alterações materiais são registadas neste ficheiro. O formato segue
### Verificado
- Migrations e seeders executados em PostgreSQL 17 real.
- Suite backend: Pint em 111 ficheiros, PHPStan nível 7 em 84 ficheiros e 70 testes Pest (340 asserções).
- Suite backend: Pint em 141 ficheiros, PHPStan nível 7 em 107 ficheiros e 103 testes Pest (585 asserções; 2 testes de registo deliberadamente ignorados).
- Frontend: TypeScript, ESLint, Prettier e build Vite de produção.
- Stack Docker operacional e endpoint de login acessível através do Nginx.
- Renderização SSR real do login validada, incluindo o conteúdo “Entrar no Portal de Reservas”.
@@ -77,3 +84,5 @@ Todas as alterações materiais são registadas neste ficheiro. O formato segue
- Migration da caixa interna de notificações aplicada em PostgreSQL 17.
- Fluxo operacional: autorização, checkout/check-in, entrega parcial, auditoria, incidentes e bloqueios validados com API Snipe-IT simulada.
- Administração: utilizadores, políticas, buffers, calendário global, relatórios, CSV, auditoria e modelos de notificação validados por testes funcionais.
- Autenticação Microsoft simulada criptograficamente: associação explícita, login, `state`, PKCE, tenant e recusa de autoassociação validados.
- Backup real criado e restaurado em PostgreSQL 17 temporário, com 12 migrations confirmadas; liveness/readiness validados através do Nginx.