ajuste no command

This commit is contained in:
unknown
2025-03-31 15:12:33 -03:00
parent 69e10717e8
commit 4522575701
11 changed files with 145 additions and 105 deletions

View File

@@ -1,46 +1,53 @@
Controller
↓ recebe LoginDto
UsersService
↓ monta o AuthenticateUserCommand
AuthenticateUserService
// Documentação atualizada da funcionalidade de autenticação usando Command + Microservice
/*
Fluxo atualizado:
Client (HTTP POST /api/v1/auth/login)
↓ envia LoginRequestDto
AuthController
↓ envia AuthenticateUserCommand para CommandBus
AuthenticateUserHandler (CommandHandler)
↓ executa regras de negócio
UserRepository
↓ executa query no banco
Result<User>
← resposta encapsulada
AuthController
↓ gera JWT com AuthService
Resposta final: LoginResponseDto com token
*/
// 1. AuthController
// Entrada da requisição HTTP (POST /api/v1/auth/login)
// - Recebe LoginRequestDto com username e password
// - Cria AuthenticateUserCommand
// - Envia para CommandBus
// - Se sucesso, gera JWT via AuthService e retorna LoginResponseDto
1. LoginController
Entrada da requisição HTTP (POST /auth/login)
// 2. AuthenticateUserCommand
// Representa a intenção de autenticação
// - Dados: username, password
Recebe LoginDto com email e password
// 3. AuthenticateUserHandler
// Executa o caso de uso de autenticação
// - Busca usuário no UserRepository
// - Verifica se o usuário está desligado ou inativo
// - Retorna Result<User>
Encaminha para o UsersService
// 4. UserRepository
// Camada de persistência (interface com o banco de dados)
// - Executa query findByUsernameAndPassword(username, password)
2. UsersService
Cria e valida o comando AuthenticateUserCommand
// 5. Result<T>
// Objeto genérico de retorno que encapsula:
// - Sucesso (success = true, data: User)
// - Falha (success = false, error: string)
Chama o serviço de autenticação de domínio (AuthenticateUserService)
// 6. AuthService
// Gera token JWT com base nos dados do usuário
// - Pode gerar access token e refresh token (se necessário)
3. AuthenticateUserService
Lógica de negócio da autenticação:
Busca usuário pelo e-mail
Verifica se o usuário está ativo
Valida a senha com hash
Retorna Result<User>
4. UserRepository
Camada de persistência (interface com o banco de dados)
Executa a query findByEmail(email: string)
5. Result<T>
Objeto genérico de retorno que encapsula:
Sucesso (success = true, com data: User)
Falha (success = false, com error: string)
// Estrutura atual suporta futura extração do AuthModule como microserviço
// - Usando @MessagePattern('auth.login') no AuthController do microserviço
// - Consumo via ClientProxy na aplicação principal com ClientModule