This is an automated email from the ASF dual-hosted git repository.
Aman-Mittal pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/fineract-consumer-facing.git
from 837dcbb Merge pull request #76 from edk12564/ci-testcount
add bb92eef - implemented audit feature - added event driven architecture
with EventBus for server side audits - utilized Spring Modulith to handle
transactional events - added liquibase migration for nontransactional audit
events - added liquibase migration for Spring Modulith's transactional events -
added PIIScreen for information in the audit table to protect user data -
implemented @TransactionalAuditListener and @NonTransactionalAuditListener
aspects to handle different types [...]
add 1a50166 - modified audit repository query for readability
new 76783cd Merge pull request #78 from edk12564/audit
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
consumer/build.gradle | 1 +
consumer/compose.yaml | 2 +
.../audit/command/api/AuditCommandController.java | 54 ++++
.../command/data/AuditEventCommandRequest.java} | 16 +-
.../command/data/AuditEventSource.java} | 8 +-
.../data/AuditEventsSubmittedCommandData.java} | 10 +-
.../command/data/AuditRetentionProperties.java | 50 ++++
.../data/SubmitAuditEventsCommandRequest.java} | 17 +-
.../consumer/audit/command/domain/AuditEvent.java | 121 +++++++++
.../exception/AuditBatchTooLargeException.java} | 11 +-
.../repository/AuditEventCommandRepository.java | 46 ++++
.../command/service/AuditCommandService.java} | 11 +-
.../command/service/AuditCommandServiceImpl.java | 166 ++++++++++++
.../audit/command/service/AuditPiiScreen.java | 47 ++++
.../audit/command/service/AuditRetentionJob.java | 65 +++++
.../command/service/ServerAuditEventListener.java | 73 ++++++
.../service/AuthenticationCommandServiceImpl.java | 64 ++++-
.../service/BeneficiariesCommandServiceImpl.java | 6 -
.../service/BeneficiariesQueryServiceImpl.java | 4 -
.../query/service/IdentityQueryServiceImpl.java | 2 -
.../infrastructure/access/data/ActionPolicies.java | 1 +
.../infrastructure/access/data/ConsumerAction.java | 3 +-
...PrincipalUserData.java => RateLimitWindow.java} | 7 +-
...eption.java => RateLimitExceededException.java} | 8 +-
.../access/filter/DeviceFingerprintFilter.java | 21 ++
.../access/filter/RateLimitFilter.java | 77 ++++++
.../access/service/AccessPolicyEvaluator.java | 35 ++-
.../access/service/RateLimitCounter.java | 61 +++++
.../annotation/NonTransactionalAuditListener.java} | 11 +-
.../annotation/TransactionalAuditListener.java} | 9 +-
.../infrastructure/audit/data/AuditEventType.java | 48 ++++
.../audit/data/AuditSeverity.java} | 9 +-
.../audit/data/NonTransactionalAuditEvent.java} | 30 ++-
.../audit/data/TransactionalAuditEvent.java} | 30 ++-
...{AuthenticationConfig.java => AsyncConfig.java} | 8 +-
...ionProperties.java => RateLimitProperties.java} | 25 +-
.../infrastructure/configs/SecurityConfig.java | 13 +-
.../command/service/LoansCommandServiceImpl.java | 4 -
.../loans/query/service/LoansQueryServiceImpl.java | 10 -
.../otp/command/service/OtpCommandServiceImpl.java | 23 +-
.../service/RegistrationCommandServiceImpl.java | 4 -
.../query/service/SavingsQueryServiceImpl.java | 7 -
.../query/service/SummaryQueryServiceImpl.java | 2 -
.../service/TransfersCommandServiceImpl.java | 3 -
.../command/service/UserCommandServiceImpl.java | 29 ++-
.../user/query/service/UserQueryServiceImpl.java | 8 -
consumer/src/main/resources/application.properties | 17 ++
.../004-create-audit-events.yaml} | 83 +++---
.../db/changelog/db.changelog-master.yaml | 4 +
.../005-create-event-publication.yaml} | 60 ++---
.../service/AuditCommandServiceImplTest.java | 273 ++++++++++++++++++++
.../audit/command/service/AuditPiiScreenTest.java | 67 +++++
.../command/service/AuditRetentionJobTest.java | 137 ++++++++++
.../service/ServerAuditEventListenerTest.java | 147 +++++++++++
.../AuthenticationCommandServiceImplTest.java | 7 +-
.../cucumber/helpers/ConsumerApiClientFactory.java | 14 +-
.../consumer/cucumber/hooks/RateLimitReset.java | 54 ++++
.../consumer/cucumber/steps/AuditSteps.java | 285 +++++++++++++++++++++
.../consumer/cucumber/steps/RateLimitSteps.java | 113 ++++++++
.../access/filter/DeviceFingerprintFilterTest.java | 25 +-
.../access/filter/RateLimitFilterTest.java | 129 ++++++++++
.../access/service/AccessPolicyEvaluatorTest.java | 4 +
.../access/service/RateLimitCounterTest.java | 99 +++++++
.../command/service/OtpCommandServiceImplTest.java | 6 +-
.../service/UserCommandServiceImplTest.java | 4 +
consumer/src/test/resources/features/audit.feature | 52 ++++
.../src/test/resources/features/ratelimit.feature | 23 +-
frontend/public/i18n/en.json | 3 +-
frontend/public/i18n/hi.json | 3 +-
frontend/src/app/app.config.ts | 3 +
frontend/src/app/core/audit/audit-error-handler.ts | 49 ++++
frontend/src/app/core/audit/audit.service.ts | 114 +++++++++
frontend/src/app/core/audit/pii-scrub.ts | 48 ++++
.../src/app/core/interceptors/error.interceptor.ts | 45 +++-
.../features/beneficiaries/beneficiaries.store.ts | 3 +
frontend/src/app/layout/shell.component.ts | 53 +++-
76 files changed, 2910 insertions(+), 274 deletions(-)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/audit/command/api/AuditCommandController.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{transfers/command/data/TransferChallengeCommandData.java
=> audit/command/data/AuditEventCommandRequest.java} (79%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/command/data/UserStatus.java
=> audit/command/data/AuditEventSource.java} (87%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> audit/command/data/AuditEventsSubmittedCommandData.java} (85%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/audit/command/data/AuditRetentionProperties.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SendOtpCommandRequest.java
=> audit/command/data/SubmitAuditEventsCommandRequest.java} (78%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/audit/command/domain/AuditEvent.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/InvalidCredentialsException.java
=> audit/command/exception/AuditBatchTooLargeException.java} (73%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/audit/command/repository/AuditEventCommandRepository.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{summary/query/service/SummaryQueryService.java
=> audit/command/service/AuditCommandService.java} (67%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/audit/command/service/AuditCommandServiceImpl.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/audit/command/service/AuditPiiScreen.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/audit/command/service/AuditRetentionJob.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/audit/command/service/ServerAuditEventListener.java
copy
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/access/data/{PrincipalUserData.java
=> RateLimitWindow.java} (90%)
copy
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/access/exception/{AccessKycRequiredException.java
=> RateLimitExceededException.java} (78%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/access/filter/RateLimitFilter.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/access/service/RateLimitCounter.java
rename
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/{command/Command.java
=> audit/annotation/NonTransactionalAuditListener.java} (77%)
rename
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/{query/Query.java
=> audit/annotation/TransactionalAuditListener.java} (79%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/audit/data/AuditEventType.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/command/data/UserStatus.java
=> infrastructure/audit/data/AuditSeverity.java} (86%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{beneficiaries/command/data/ConfirmUpdateBeneficiaryCommand.java
=> infrastructure/audit/data/NonTransactionalAuditEvent.java} (57%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{beneficiaries/command/data/ConfirmUpdateBeneficiaryCommand.java
=> infrastructure/audit/data/TransactionalAuditEvent.java} (57%)
copy
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/configs/{AuthenticationConfig.java
=> AsyncConfig.java} (83%)
copy
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/configs/{AuthenticationProperties.java
=> RateLimitProperties.java} (64%)
copy
consumer/src/main/resources/db/changelog/{beneficiaries/003-create-beneficiaries.yaml
=> audit/004-create-audit-events.yaml} (60%)
copy
consumer/src/main/resources/db/changelog/{user/001-create-users-table.yaml =>
infrastructure/005-create-event-publication.yaml} (63%)
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/audit/command/service/AuditCommandServiceImplTest.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/audit/command/service/AuditPiiScreenTest.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/audit/command/service/AuditRetentionJobTest.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/audit/command/service/ServerAuditEventListenerTest.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/cucumber/hooks/RateLimitReset.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/cucumber/steps/AuditSteps.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/cucumber/steps/RateLimitSteps.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/infrastructure/access/filter/RateLimitFilterTest.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/infrastructure/access/service/RateLimitCounterTest.java
create mode 100644 consumer/src/test/resources/features/audit.feature
copy frontend/.editorconfig =>
consumer/src/test/resources/features/ratelimit.feature (65%)
create mode 100644 frontend/src/app/core/audit/audit-error-handler.ts
create mode 100644 frontend/src/app/core/audit/audit.service.ts
create mode 100644 frontend/src/app/core/audit/pii-scrub.ts