Files
eden/.gitignore
Matheus (Handix) 4d23af3b23 feat(auth): e-mail transacional real + recuperação de senha
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>
2026-09-04 08:02:33 -03:00

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