Skip to content

feat: implement login use case and dtos#11

Open
Otavio2704 wants to merge 6 commits into
Idinaldo:mainfrom
Otavio2704:feature/add-login-use-case
Open

feat: implement login use case and dtos#11
Otavio2704 wants to merge 6 commits into
Idinaldo:mainfrom
Otavio2704:feature/add-login-use-case

Conversation

@Otavio2704

Copy link
Copy Markdown
Collaborator

Description

Implementação do caso de uso de Login (LoginUseCase) e DTOs de entrada e saída correspondentes. Este é o PR 2 da implementação do endpoint de login.

Type of change

  • feat (new feature)
  • fix (bug fix)
  • refactor (code improvement without behavior change)
  • docs (documentation only)
  • test (adding or fixing tests)
  • chore (build, config, etc.)

Changes made

  • Criação dos DTOs LoginRequestDTO e LoginResponseDTO.
  • Criação do contrato LoginUseCase e sua implementação LoginUseCaseImpl com regras de negócio de autenticação.
  • Tratamento de exceções personalizadas (InvalidCredentialsException e AccountNotActiveException) no RestExceptionHandler para retornar 401 e 403 respectivamente.
  • Criação de testes unitários abrangentes para cobrir todos os fluxos de sucesso e erro do caso de uso de login.

Notes for reviewers

Este PR depende das alterações feitas no PR 1 (método findByEmail no repositório), as quais já foram mescladas nesta branch localmente. A verificação do hash de senha utiliza BCrypt via PasswordEncoder.

Checklist

  • Conventional Commits
  • Hexagonal Architecure is being applied
  • DDD is being applied
  • Unit Tests are included
  • I updated documentation (if needed)
  • No unnecessary files are included

Copilot AI review requested due to automatic review settings June 2, 2026 22:13

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Implements the core application-layer login flow for the auth module by introducing a LoginUseCase contract + implementation, request/response DTOs, and HTTP exception mapping for authentication-related errors.

Changes:

  • Added LoginUseCase and LoginUseCaseImpl to authenticate by email/password and enforce AccountStatus.ACTIVE.
  • Added LoginRequestDTO (input) and LoginResponseDTO (output) for the login use case.
  • Extended RestExceptionHandler to map InvalidCredentialsException → 401 and AccountNotActiveException → 403, plus added unit tests for login success/error paths.

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
auth/src/main/java/com/brabank/auth/application/usecases/contracts/LoginUseCase.java Introduces the login use case contract.
auth/src/main/java/com/brabank/auth/application/usecases/impl/LoginUseCaseImpl.java Implements authentication rules and returns a login response DTO.
auth/src/main/java/com/brabank/auth/adapters/in/dtos/LoginRequestDTO.java Adds validated input DTO for login.
auth/src/main/java/com/brabank/auth/adapters/out/dtos/LoginResponseDTO.java Adds output DTO for login results (id/email/status/role).
auth/src/main/java/com/brabank/auth/infrastructure/exceptions/InvalidCredentialsException.java Adds exception representing invalid login credentials.
auth/src/main/java/com/brabank/auth/infrastructure/exceptions/AccountNotActiveException.java Adds exception representing non-active accounts attempting login.
auth/src/main/java/com/brabank/auth/infrastructure/exceptions/RestExceptionHandler.java Maps new auth exceptions to 401/403 responses.
auth/src/test/java/com/brabank/auth/application/usecases/impl/LoginUseCaseImplTest.java Adds unit tests covering login success and failure scenarios.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +38 to +43
return new LoginResponseDTO(
identity.getId(),
identity.getEmail(),
identity.getStatus(),
identity.getRole()
);

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AJUSTADO ;)

Comment on lines +56 to +59
assertEquals(identity.getId(), response.id());
assertEquals("user@brabank.com", response.email());
assertEquals(AccountStatus.ACTIVE, response.status());
assertEquals(Role.CLIENT, response.role());

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AJUSTADO ;)

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.

2 participants