You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by am...@apache.org on 2026/07/19 08:12:35 UTC
(fineract-consumer-facing) 01/01: Merge pull request #39 from edk12564/main
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 7a49aa3ac039f2025984b8b937fa6fe37efb9444
Merge: 0196feb 4501284
Author: Aman-Mittal <32...@users.noreply.github.com>
AuthorDate: Sun Jul 19 13:42:30 2026 +0530
Merge pull request #39 from edk12564/main
Beneficiaries implementation and bugfixes
consumer/build.gradle | 21 +-
consumer/compose.yaml | 13 +
.../api/AuthenticationCommandController.java | 43 +-
.../command/data/AuthenticationConstants.java | 3 +-
.../authentication/command/data/LogoutCommand.java | 3 +
.../command/data/SessionCommandData.java | 4 -
.../service/AuthenticationCommandServiceImpl.java | 93 +--
.../api/BeneficiariesCommandController.java | 133 +++++
.../data/BeneficiaryChallengeCommandData.java} | 11 +-
.../command/data/BeneficiaryCommandData.java} | 19 +-
.../command/data/BeneficiaryConstants.java} | 18 +-
.../data/ConfirmAddBeneficiaryCommand.java} | 22 +-
.../data/ConfirmAddBeneficiaryCommandRequest.java} | 41 +-
.../data/ConfirmUpdateBeneficiaryCommand.java} | 16 +-
.../ConfirmUpdateBeneficiaryCommandRequest.java} | 28 +-
.../data/InitiateAddBeneficiaryCommand.java} | 20 +-
.../InitiateAddBeneficiaryCommandRequest.java} | 33 +-
.../data/InitiateUpdateBeneficiaryCommand.java} | 14 +-
.../InitiateUpdateBeneficiaryCommandRequest.java} | 22 +-
.../command/data/ResolvedBeneficiaryAccount.java} | 14 +-
.../beneficiaries/command/domain/Beneficiary.java | 113 ++++
.../command/domain/BeneficiaryAccountType.java} | 12 +-
.../BeneficiaryAccountInvalidException.java} | 11 +-
.../BeneficiaryDuplicateNameException.java} | 11 +-
.../exception/BeneficiaryNotFoundException.java} | 11 +-
.../BeneficiaryStepUpInvalidException.java} | 11 +-
.../BeneficiaryUpstreamUnavailableException.java} | 11 +-
.../repository/BeneficiaryCommandRepository.java} | 27 +-
.../service/BeneficiariesCommandService.java | 41 ++
.../service/BeneficiariesCommandServiceImpl.java | 332 +++++++++++
.../query/api/BeneficiariesQueryController.java | 53 ++
.../query/data/BeneficiaryQueryData.java} | 18 +-
.../query/data/BeneficiaryTemplateQueryData.java} | 13 +-
.../query/domain/BeneficiaryAccountType.java} | 12 +-
.../query/domain/BeneficiaryQueryEntity.java | 108 ++++
.../repository/BeneficiaryQueryRepository.java} | 24 +-
.../query/service/BeneficiariesQueryService.java} | 25 +-
.../service/BeneficiariesQueryServiceImpl.java | 87 +++
.../infrastructure/access/data/ActionPolicies.java | 83 +++
.../access/data/ActionPolicy.java} | 19 +-
.../access/data/ConsumerAction.java} | 32 +-
.../data/OwnedAccounts.java} | 14 +-
.../access/data/ResourceType.java} | 12 +-
.../exception/AccessKycRequiredException.java} | 10 +-
.../exception/AccessPolicyMissingException.java} | 10 +-
.../AccessScopeInsufficientException.java} | 10 +-
.../access/filter/DeviceFingerprintFilter.java | 102 ++++
.../access/service/AccessPolicyEvaluator.java | 82 +++
.../infrastructure/access/service/JwtDenylist.java | 64 +++
.../access/service/OwnedAccountsCache.java | 129 +++++
.../configs/AuthenticationProperties.java | 3 +-
.../consumer/infrastructure/configs/JwtConfig.java | 24 +-
.../infrastructure/configs/OpenApiConfig.java | 11 +-
.../infrastructure/configs/SecurityConfig.java | 21 +-
.../fineractclient/FineractCaller.java | 45 ++
.../infrastructure/jwt/{ => data}/IssuedJwt.java | 2 +-
.../infrastructure/jwt/{ => data}/JwtClaims.java | 4 +-
.../jwt/{ => service}/JwtIssuer.java | 5 +-
.../infrastructure/stepup/StepUpTokenService.java | 11 +-
.../infrastructure/web/AccessPolicyEvaluator.java | 64 ---
.../{UserClientResolver.java => EmailMasking.java} | 28 +-
.../infrastructure/web/UserClientResolver.java | 5 +
....java => LoanCommandAccessDeniedException.java} | 4 +-
...tion.java => LoanCommandNotFoundException.java} | 4 +-
...> LoanCommandUpstreamUnavailableException.java} | 4 +-
.../command/service/LoansCommandServiceImpl.java | 75 +--
.../loans/query/api/LoansQueryController.java | 32 +-
.../data/LoanApplicationTemplateQueryData.java | 2 -
...on.java => LoanQueryAccessDeniedException.java} | 6 +-
...eption.java => LoanQueryNotFoundException.java} | 4 +-
... => LoanQueryUpstreamUnavailableException.java} | 4 +-
.../loans/query/service/LoansQueryService.java | 19 +-
.../loans/query/service/LoansQueryServiceImpl.java | 114 ++--
.../consumer/otp/command/data/OtpConstants.java | 1 +
.../consumer/otp/command/data/PendingOtp.java | 5 -
.../command/repository/OtpCommandRepository.java | 30 +-
.../otp/command/service/OtpCommandServiceImpl.java | 27 +-
.../service/RegistrationCommandServiceImpl.java | 10 +-
...va => SavingsCommandAccessDeniedException.java} | 4 +-
.../command/service/SavingsCommandServiceImpl.java | 44 +-
.../savings/query/api/SavingsQueryController.java | 23 +-
.../data/SavingsApplicationTemplateQueryData.java | 2 -
...java => SavingsQueryAccessDeniedException.java} | 6 +-
.../savings/query/service/SavingsQueryService.java | 13 +-
.../query/service/SavingsQueryServiceImpl.java | 71 +--
.../transfers/command/data/TransferConstants.java | 2 -
...TransferBeneficiaryLimitExceededException.java} | 10 +-
.../service/TransfersCommandServiceImpl.java | 60 +-
.../user/query/data/UserCredentialsQueryData.java | 2 +-
.../consumer/user/query/data/UserQueryData.java | 2 +-
.../user/query/domain/UserQueryEntity.java | 65 +++
.../query/domain/UserStatus.java} | 12 +-
.../user/query/repository/UserQueryRepository.java | 10 +-
consumer/src/main/resources/application.properties | 11 +-
.../changes/003-create-beneficiaries.yaml | 103 ++++
.../db/changelog/db.changelog-master.yaml | 2 +
.../AuthenticationCommandServiceImplTest.java | 107 +++-
.../BeneficiariesCommandServiceImplTest.java | 630 +++++++++++++++++++++
.../service/BeneficiariesQueryServiceImplTest.java | 178 ++++++
.../cucumber/clients/AuthenticationClient.java | 26 +-
.../cucumber/helpers/ConsumerApiClientFactory.java | 52 ++
.../consumer/cucumber/helpers/FineractSeeder.java | 25 +-
.../consumer/cucumber/helpers/LoginHelper.java | 29 +-
.../consumer/cucumber/steps/AbacDenialSteps.java | 104 ++++
.../cucumber/steps/BeneficiariesSteps.java | 264 +++++++++
.../consumer/cucumber/steps/LoansSteps.java | 22 +-
.../consumer/cucumber/steps/LoginSteps.java | 57 +-
.../consumer/cucumber/steps/SavingsSteps.java | 22 +-
.../consumer/cucumber/steps/TransfersSteps.java | 13 +-
.../access/filter/DeviceFingerprintFilterTest.java | 154 +++++
.../access/service/AccessPolicyEvaluatorTest.java | 241 ++++++++
.../access/service/JwtDenylistTest.java | 108 ++++
.../access/service/OwnedAccountsCacheTest.java | 199 +++++++
.../jwt/{ => service}/JwtIssuerTest.java | 8 +-
.../infrastructure/web/EmailMaskingTest.java | 57 ++
.../service/LoansCommandServiceImplTest.java | 68 ++-
.../query/service/LoansQueryServiceImplTest.java | 65 ++-
.../repository/OtpCommandRepositoryTest.java | 88 +++
.../command/service/OtpCommandServiceImplTest.java | 149 +++++
.../service/SavingsCommandServiceImplTest.java | 27 +-
.../query/service/SavingsQueryServiceImplTest.java | 48 +-
.../service/TransfersCommandServiceImplTest.java | 210 +++++--
.../query/service/UserQueryServiceImplTest.java | 2 +-
.../resources/features/abac-denial.feature} | 17 +-
.../test/resources/features/beneficiaries.feature | 48 ++
consumer/src/test/resources/features/login.feature | 11 +-
frontend/playwright/tests/transfers.spec.ts | 3 +-
frontend/public/i18n/en.json | 51 +-
frontend/public/i18n/hi.json | 51 +-
frontend/src/app/app.routes.ts | 7 +
frontend/src/app/core/auth/auth.service.ts | 28 +-
frontend/src/app/core/auth/device-fingerprint.ts | 30 +-
.../src/app/core/interceptors/auth.interceptor.ts | 14 +-
.../src/app/core/interceptors/error.interceptor.ts | 8 +
.../beneficiaries/beneficiaries.component.ts | 452 +++++++++++++++
.../beneficiaries/beneficiaries.store.spec.ts | 107 ++++
.../features/beneficiaries/beneficiaries.store.ts | 88 +++
.../src/app/features/loans/loan-apply.component.ts | 1 -
.../src/app/features/loans/loans-list.component.ts | 5 -
.../app/features/savings/savings-list.component.ts | 5 -
frontend/src/app/layout/shell.component.ts | 3 +
141 files changed, 5966 insertions(+), 980 deletions(-)