This is an automated email from the ASF dual-hosted git repository. Aman-Mittal pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/fineract-consumer-facing.git
commit 96d487bb5d8744e622fd687c0ac46cc2db6ed7bd Merge: 55a9d6f 78651e4 Author: Aman-Mittal <[email protected]> AuthorDate: Mon Jun 22 22:17:35 2026 +0530 Merge pull request #27 from edk12564/main FINERACT-2655: Implement Savings, Loans, Transfers with ABAC consumer/Dockerfile | 2 +- consumer/build.gradle | 67 ++++ consumer/compose.yaml | 6 +- consumer/{Dockerfile => gradle.properties} | 17 +- .../api/AuthenticationCommandController.java | 5 + .../service/AuthenticationCommandServiceImpl.java | 22 +- .../infrastructure/configs/SecurityConfig.java | 3 + .../fineractclient/spec/fineract.ignore} | 34 +- .../fineractclient/spec/fineract.json | 1 + .../fineractclient/templates/apiClient.mustache} | 15 +- .../consumer/infrastructure/jwt/JwtClaims.java | 1 + .../JwtClaims.java => stepup/StepUpConstants.java} | 14 +- .../infrastructure/stepup/StepUpTokenService.java | 97 ++++++ .../infrastructure/web/AccessPolicyEvaluator.java | 64 ++++ .../web/UserClientResolver.java} | 28 +- .../loans/command/api/LoansCommandController.java | 160 +++++++++ .../data/ConfirmLoanChargePaymentCommand.java} | 16 +- .../ConfirmLoanChargePaymentCommandRequest.java} | 16 +- .../data/InitiateLoanChargePaymentCommand.java} | 11 +- .../command/data/LoanApplicationCommandData.java} | 11 +- .../LoanChargePaymentChallengeCommandData.java} | 19 +- .../data/LoanChargePaymentCommandData.java} | 11 +- .../command/data/LoanChargePaymentConstants.java} | 15 +- .../data/ModifyLoanApplicationCommand.java} | 25 +- .../data/ModifyLoanApplicationCommandRequest.java | 81 +++++ .../data/SubmitLoanApplicationCommand.java} | 24 +- .../data/SubmitLoanApplicationCommandRequest.java | 81 +++++ .../data/WithdrawLoanApplicationCommand.java} | 11 +- .../WithdrawLoanApplicationCommandRequest.java} | 16 +- .../LoanApplicationInvalidException.java} | 23 +- .../LoanChargePaymentInvalidException.java} | 32 +- .../LoanChargePaymentNotFoundException.java} | 16 +- .../LoanChargePaymentStepUpInvalidException.java} | 16 +- ...ChargePaymentUpstreamUnavailableException.java} | 16 +- .../command/exception/LoanNotFoundException.java} | 16 +- .../LoanUpstreamUnavailableException.java} | 16 +- .../loans/command/service/LoansCommandService.java | 45 +++ .../command/service/LoansCommandServiceImpl.java | 289 ++++++++++++++++ .../loans/query/api/LoansQueryController.java | 133 +++++++ .../query/data/CalculateLoanScheduleQuery.java} | 24 +- .../query/data/LoanAccountListItemQueryData.java} | 25 +- .../query/data/LoanAccountQueryData.java} | 21 +- .../data/LoanApplicationTemplateQueryData.java | 73 ++++ .../query/data/LoanChargeQueryData.java} | 16 +- .../query/data/LoanGuarantorQueryData.java} | 11 +- .../query/data/LoanProductOptionQueryData.java} | 9 +- .../data/LoanSchedulePreviewQueryRequest.java | 81 +++++ .../query/data/LoanScheduleQueryData.java} | 33 +- .../query/data/LoanTransactionQueryData.java} | 16 +- .../query/exception/LoanNotFoundException.java} | 16 +- .../exception/LoanProductNotFoundException.java} | 16 +- .../LoanSchedulePreviewInvalidException.java} | 16 +- .../LoanUpstreamUnavailableException.java} | 16 +- .../loans/query/service/LoansQueryService.java | 51 +++ .../loans/query/service/LoansQueryServiceImpl.java | 383 +++++++++++++++++++++ .../command/repository/OtpCommandRepository.java | 20 +- .../otp/command/service/OtpCommandService.java | 4 +- .../otp/command/service/OtpCommandServiceImpl.java | 10 +- .../command/api/RegistrationCommandController.java | 4 + .../service/RegistrationCommandServiceImpl.java | 13 +- .../query/service/IdentityQueryServiceImpl.java | 26 +- .../command/api/SavingsCommandController.java | 85 +++++ .../data/ConfirmSavingsChargePaymentCommand.java} | 18 +- ...ConfirmSavingsChargePaymentCommandRequest.java} | 24 +- .../data/InitiateSavingsChargePaymentCommand.java} | 13 +- ...nitiateSavingsChargePaymentCommandRequest.java} | 17 +- .../SavingsChargePaymentChallengeCommandData.java} | 19 +- .../data/SavingsChargePaymentCommandData.java} | 13 +- .../data/SavingsChargePaymentConstants.java} | 15 +- .../SavingsChargePaymentInvalidException.java} | 32 +- .../SavingsChargePaymentNotFoundException.java} | 16 +- ...avingsChargePaymentStepUpInvalidException.java} | 16 +- ...ChargePaymentUpstreamUnavailableException.java} | 16 +- .../command/service/SavingsCommandService.java} | 19 +- .../command/service/SavingsCommandServiceImpl.java | 167 +++++++++ .../savings/query/api/SavingsQueryController.java | 107 ++++++ .../data/SavingsAccountListItemQueryData.java} | 13 +- .../query/data/SavingsAccountQueryData.java} | 16 +- .../data/SavingsApplicationTemplateQueryData.java | 57 +++ .../query/data/SavingsChargeQueryData.java} | 12 +- .../query/data/SavingsProductOptionQueryData.java} | 9 +- .../query/data/SavingsTransactionQueryData.java} | 15 +- .../query/data/SavingsTransactionSearchQuery.java} | 13 +- .../SavingsAccountNotFoundException.java} | 16 +- .../SavingsProductNotFoundException.java} | 16 +- .../exception/SavingsRequestInvalidException.java} | 16 +- .../SavingsUpstreamUnavailableException.java} | 16 +- .../savings/query/service/SavingsQueryService.java | 43 +++ .../query/service/SavingsQueryServiceImpl.java | 294 ++++++++++++++++ .../command/api/TransfersCommandController.java | 82 +++++ .../command/data/ConfirmTransferCommand.java} | 19 +- .../data/ConfirmTransferCommandRequest.java} | 35 +- .../command/data/InitiateTransferCommand.java} | 14 +- .../data/InitiateTransferCommandRequest.java} | 29 +- .../data/TransferChallengeCommandData.java} | 19 +- .../command/data/TransferCommandData.java} | 13 +- .../command/data/TransferConstants.java} | 45 ++- .../exception/TransferInvalidException.java} | 18 +- .../exception/TransferNotFoundException.java} | 16 +- .../exception/TransferStepUpInvalidException.java} | 16 +- .../TransferUpstreamUnavailableException.java} | 16 +- .../command/service/TransfersCommandService.java} | 16 +- .../service/TransfersCommandServiceImpl.java | 206 +++++++++++ .../user/command/data/UserCreatedCommandData.java | 2 +- .../consumer/user/command/domain/User.java | 8 +- .../command/service/UserCommandServiceImpl.java | 2 +- .../user/query/data/UserCredentialsQueryData.java | 2 +- .../consumer/user/query/data/UserQueryData.java | 3 +- .../user/query/repository/UserQueryRepository.java | 10 +- .../user/query/service/UserQueryService.java | 2 +- .../user/query/service/UserQueryServiceImpl.java | 4 +- consumer/src/main/resources/application.properties | 2 +- .../changelog/changes/001-create-users-table.yaml | 2 +- .../AuthenticationCommandServiceImplTest.java | 33 +- .../cucumber/clients/FineractCodeLookupClient.java | 34 -- .../clients/FineractIdentifierSeedClient.java | 32 -- .../consumer/cucumber/helpers/FineractSeeder.java | 311 +++++++++++++++-- .../consumer/cucumber/helpers/LoginHelper.java | 68 ++++ .../cucumber/helpers/RegistrationHelper.java | 31 +- .../consumer/cucumber/steps/LoansSteps.java | 162 +++++++++ .../consumer/cucumber/steps/RegistrationSteps.java | 6 +- .../consumer/cucumber/steps/SavingsSteps.java | 169 +++++++++ .../consumer/cucumber/steps/TransfersSteps.java | 155 +++++++++ .../service/LoansCommandServiceImplTest.java | 232 +++++++++++++ .../query/service/LoansQueryServiceImplTest.java | 91 +++++ .../service/SavingsCommandServiceImplTest.java | 234 +++++++++++++ .../query/service/SavingsQueryServiceImplTest.java | 91 +++++ .../service/TransfersCommandServiceImplTest.java | 273 +++++++++++++++ .../consumer/user/command/domain/UserTest.java | 6 +- .../service/UserCommandServiceImplTest.java | 8 +- .../query/service/UserQueryServiceImplTest.java | 18 +- consumer/src/test/resources/features/loans.feature | 47 +++ .../src/test/resources/features/savings.feature | 47 +++ .../test/resources/features/transfers.feature} | 27 +- 134 files changed, 5356 insertions(+), 772 deletions(-)
