Skip to content

feat(auth,users): implementa autenticação JWT via cookies HttpOnly e módulo de usuários - #3

Merged
davidmartins-dev merged 11 commits into
mainfrom
feature/users-auth
Oct 8, 2026
Merged

davidmartins-dev merged 11 commits into
mainfrom
feature/users-auth

Conversation

@davidmartins-dev

Copy link
Copy Markdown
Owner

Contexto & Motivação

Este Pull Request implementa a fundação de autenticação e gestão de usuários da API do Cifra. O objetivo é fornecer uma camada segura de cadastro, autenticação e sessão de usuários, seguindo práticas recomendadas de segurança financeira e isolamento de dados.


Principais Mudanças

1. Módulo de Usuários (UsersModule)

  • Endpoint POST /api/v1/users: criação direta de usuário com hash de senha (bcrypt) e sanitização de dados sensíveis na resposta.
  • Normalização de e-mails (trim e toLowerCase) para evitar duplicidades por caixa alta ou espaços.
  • Tratamento explícito de concorrência e restrição única do Prisma (P2002 -> ConflictException).
  • Validação estrita de DTOs com class-validator e class-transformer (whitelist e forbidNonWhitelisted).

2. Módulo de Autenticação (AuthModule)

  • POST /api/v1/auth/register: cadastro com inicialização automática de sessão.
  • POST /api/v1/auth/login: autenticação por e-mail e senha com renovação de sessão.
  • GET /api/v1/auth/me: consulta de dados do usuário autenticado no ciclo de vida atual.
  • POST /api/v1/auth/logout: encerramento de sessão limpando o cookie com data de expiração no passado.
  • Emissão de tokens JWT com armazenamento em cookies seguros (HttpOnly, SameSite: strict, secure em produção) e fallback para Authorization: Bearer.

3. Segurança & Observabilidade

  • Rate limiting com @nestjs/throttler (ThrottlerGuard registrado globalmente).
  • Documentação interativa via Swagger / OpenAPI configurada em /api/docs.
  • Configuração de prefixo global /api/v1, CORS e cookie-parser.

Cobertura de Testes

  • Testes Unitários (Vitest):
    • UsersService & UsersController
    • AuthService & AuthController
    • JwtStrategy (validação de payload e integridade de roles)
  • Testes E2E (End-to-End):
    • auth.e2e-spec.ts: ciclo completo de register, login, me, logout e headers de cookie.
    • users.e2e-spec.ts: criação direta, tratamento de duplicidade e validação de schema estrito.

Como Testar Localmente

  1. Suba o banco de dados:
    docker compose up -d
  2. Execute a suíte de testes unitários e E2E:
    pnpm --filter api test
    pnpm --filter api run test:e2e
  3. Inicie o servidor em modo de desenvolvimento e explore via Swagger:
    pnpm --filter api start:dev
    Acesse a documentação: http://localhost:3000/api/docs

@davidmartins-dev
davidmartins-dev merged commit 2295a6a into main Oct 8, 2026
1 check passed
@davidmartins-dev
davidmartins-dev deleted the feature/users-auth branch October 8, 2026 21:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant