Liga o adapter SMTP existente (packages/integrations, já era fail-soft) a um consumidor de verdade e adiciona o fluxo completo de recuperação de senha, faltante desde a Fase 1. - UsersService.invite() agora envia e-mail com a senha temporária (mantém o retorno na resposta também — dupla entrega, eden.md §4.8). - POST /v1/auth/forgot-password + POST /v1/auth/reset-password: token de 256 bits, só o hash SHA-256 persistido (users.reset_token_hash/ reset_token_expires_at — colunas que já existiam desde a baseline da Fase 1, nunca usadas até agora), validade de 1h, uso único, revoga todas as sessões ativas do usuário ao concluir. Mesma disciplina anti-enumeração do login: resposta idêntica para e-mail cadastrado ou não. - Frontend: link "Esqueci minha senha" no LoginPage, novas ForgotPasswordPage/ResetPasswordPage. Teste de integração novo (password-reset.spec.ts, 3 testes) usa vi.mock para interceptar sendMail e recuperar o token real do corpo do e-mail — única forma de testar o caminho feliz de ponta a ponta, já que o token nunca é devolvido na resposta da API. Suíte completa: 33/33 (30→33). pnpm turbo run typecheck build (28/28). Testado ao vivo através do proxy same-origin: anti-enumeração confirmada com curl real, token gravado no Postgres, token bogus rejeitado (400). Claude-Session: https://claude.ai/code/session_01BcWWuKfykGtUweXmHD6cKx Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
56 lines
1007 B
Plaintext
56 lines
1007 B
Plaintext
# Dependencies
|
|
node_modules/
|
|
.pnpm-store/
|
|
|
|
# Build outputs
|
|
dist/
|
|
build/
|
|
.turbo/
|
|
*.tsbuildinfo
|
|
|
|
# Env / secrets
|
|
.env
|
|
.env.*.local
|
|
.env.local
|
|
*.pem
|
|
*.key
|
|
CREDENCIAIS-INICIAIS.md
|
|
|
|
# Logs
|
|
*.log
|
|
npm-debug.log*
|
|
pnpm-debug.log*
|
|
|
|
# Test / coverage
|
|
coverage/
|
|
.nyc_output/
|
|
|
|
# Editor
|
|
.vscode/*
|
|
!.vscode/extensions.json
|
|
.idea/
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Purchased third-party theme asset — too large to version; extracted
|
|
# components live in packages/ui instead (see docs/project-inventory.md).
|
|
tema_do_Eden.zip
|
|
|
|
# Scratch space for one-off inventory/extraction work
|
|
.tmp/
|
|
|
|
# Local Postgres data volume if ever bind-mounted for debugging
|
|
infra/docker/pgdata/
|
|
|
|
# Claude Code local overrides (personal, never shared)
|
|
.claude/settings.local.json
|
|
|
|
# Temporary git worktrees created for parallel subagent work — each is its
|
|
# own nested git checkout; never vendor these into the main repo history.
|
|
.claude/worktrees/
|
|
|
|
# Session-local lock file for scheduled wakeups, not project content.
|
|
.claude/scheduled_tasks.lock
|