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 <[email protected]>
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(-)

Reply via email to