ajuste no command
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user