Commit Graph
25 Commits
Author SHA1 Message Date
niteshandClaude Sonnet 5 7c15fbb0c7 fix(documentmanagement): close leaked file handles causing Windows re-upload failures; add entity KYC document CodeValues
Fineract Build & Cucumber tests (without E2E tests) / verify (main, build-core) (push) Canceled after 0s
Fineract Build & Cucumber tests (without E2E tests) / verify (main, cucumber) (push) Canceled after 0s
Fineract Build & Cucumber tests (without E2E tests) / verify (progressive-loan, build-progressive-loan) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 8 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 9 of 10) (push) Canceled after 0s
Fineract Docker Builds / build (false, docker-compose-postgresql.yml, postgresql) (push) Canceled after 0s
Fineract Docker Builds / build (true, docker-compose.yml, mariadb) (push) Canceled after 0s
Fineract Documentation build / build (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 1 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 10 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 2 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 3 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 4 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 5 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 6 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 7 of 10) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-1) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-2) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-3) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-4) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-5) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-1) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-2) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-3) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-4) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-5) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-1) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-2) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-3) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-4) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-5) (push) Canceled after 0s
Fineract Liquibase Only mode - PostgreSQL / test (push) Canceled after 0s
Fineract Messaging Smoke Tests / Smoke Test with ActiveMQ (push) Canceled after 0s
Fineract Messaging Smoke Tests / Smoke Test with Kafka (push) Canceled after 0s
FileContentStoreService.upload() opened a FileOutputStream (write) and an
InputStream (post-upload MIME check) without closing either. Windows keeps
those handles open for the JVM's lifetime, so the next upsert-style
delete-then-recreate of the same file (e.g. client signature/photo
re-upload) failed with FileSystemException: "being used by another
process". Wrapped both in try-with-resources.

Also adds every distinct non-individual/constitution KYC document name
(HUF, Private/Public Ltd, LLP, Partnership, Trust, Society, Proprietorship,
Association, Govt/PSU, Cooperative) as a KYCIdProofType code value.
resolveDocumentTypeId() on the frontend matches the picked document name
against this list before creating a client_identifier; since these entity
document names had no corresponding code value, every non-individual
client's KYC document upload silently failed to persist.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-29 11:34:18 +05:30
niteshandClaude Sonnet 5 67214ec0f8 fix(clients): stale signature bug, CKYC fixes, monthly turnover/annual income, senior citizen/PWD classification
- Add m_client.signature_id (single-slot pointer, mirrors image_id) plus
  ClientSignatureIdAdapter/EntitySignatureIdAdapter so re-uploading a signature updates the
  existing m_document row in place instead of leaving duplicate rows behind that readers picked
  inconsistently.
- Fix CkycBatchBuilderServiceImpl address-proof classification to read the client identifier's
  actual m_code (KYCAddressProofType vs KYCIdProofType) instead of a hardcoded string set that
  disagreed with the CKYC tab and silently dropped Aadhaar-as-address-proof identifiers.
- Organize the CKYC ZIP into per-artefact-type folders (PHOTO/SIGNATURE/ID_PROOF/ADDRESS_PROOF).
- Fix CkycBatchBuilderServiceImpl.createBatch() using the daily batch sequence number as the ZIP
  document's parent_entity_id instead of the real m_ckyc_batch.id, which 404'd on download
  whenever the two diverged (i.e. almost always).
- Add monthlyTurnover and annualIncome fields alongside the existing annualTurnover/monthlyIncome.
- Add isSeniorCitizen, isPwd, and pwdCategory (proper m_code_value-backed PwdCategory code, not a
  free-text column) to m_client, following the same pattern as occupation/religion/marital status.
- Add Diploma as its own Education Level (with diploma-specific DegreeQualification values) and
  Graduate as a level distinct from Undergraduate.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 10:50:16 +05:30
AdityaandClaude Opus 4.7 5e3212dc54 Add MFA backend: SMS/email OTP, factor management, OTP audit log
- Login 2FA via @Primary MfaFactorBackedTwoFactorServiceImpl (replaces legacy)
- LincPay SMS OTP and SMTP email OTP with auto-promote to m_user_mfa_factor
- Reusable EmailSenderService + EmailTemplateService (CBSnexora branding)
- Admin OTP audit viewer (GET /v1/otp-logs) with paging, search, masking
- Self-service MFA factor API at /v1/mfa/factors
- READ_OTP_LOG permission + OTP Log Auditor role + bankadmin direct grant
- JsonAuthenticationEntryPoint suppresses Basic-auth popup for SPA paths
- TwoFactorAuthenticationFilter grants TWOFACTOR_AUTHENTICATED when no challenge
- Soft-delete + audit columns + deletion audit + version on client tables
- CIF number generator (TTYYYYNNNNNN format)
- DocumentNotFoundExceptionMapper to silence noisy WARN logs on missing images
- Liquibase migrations 0278-0291 (MFA, OTP log, audit/soft-delete, role wiring)

Note: application.properties intentionally not committed — contains local DB
and Gmail App Password fallbacks. Set SPRING_MAIL_PASSWORD,
FINERACT_DEFAULT_TENANTDB_PWD, FINERACT_HIKARI_PASSWORD as env vars in prod.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 13:19:10 +05:30
Attila BudaiandAdam Saghy 2047553366 FINERACT-2081: add api verification workflow 2026-02-23 15:43:14 +00:00
airajenaandAdam Saghy 296cf902b9 FINERACT-1878: Separate profile image paths for staff and clients 2026-02-19 11:25:22 +00:00
Aleksandar VidakovicandGitHub 3a842ecb9a FINERACT-2243: New command processing - payment type (#5506) 2026-02-18 08:19:29 -06:00
Aleksandar VidakovicandAleksandar Vidakovic 2ff0c62f40 FINERACT-2246: New command processing - document management 2026-02-16 14:56:40 +01:00
Aman-MittalandAdam Saghy d1e456ef43 FINERACT-2421: Refractor redundant and some deprecated code as per new Java 21 style (Phase 4) 2026-01-08 22:32:39 +01:00
Aman-MittalandAdam Saghy 0ba1745443 FINERACT-2421: Refractor redundant and some deprecated code as per new Java 21 style (Phase 3) 2025-12-26 19:27:38 +01:00
Aman-MittalandAdam Saghy 00e9ac8320 FINERACT-2346: Refractor, Minor Sonar fixes and remove some deprecated code 2025-12-01 19:11:59 +01:00
Adam Saghy db28259b1a FINERACT-2181: Gradle task rework - Optimized weaving across all modules 2025-06-22 22:41:34 +02:00
Arnold GalovicsandArnold Gálovics a76c189a04 Revert "FINERACT-2181: Some tweaks in the gradle build to ensure correct task processing"
This reverts commit 6cb60f48
2025-06-20 21:53:28 +02:00
Arnold GalovicsandArnold Gálovics 1ebfad230c Revert "FINERACT-2181: Some tweaks in the gradle build to ensure correct task processing"
This reverts commit 11cecb0d45.
2025-06-20 21:53:28 +02:00
Arnold GalovicsandArnold Gálovics d46ab4e73e Revert "FINERACT-2181: Make 'staticWeaveJPA' gradle task cacheable"
This reverts commit dd2c29fb91.
2025-06-20 21:53:28 +02:00
Adam SaghyandArnold Gálovics dd2c29fb91 FINERACT-2181: Make 'staticWeaveJPA' gradle task cacheable 2025-06-19 07:12:59 +02:00
Adam SaghyandArnold Gálovics 11cecb0d45 FINERACT-2181: Some tweaks in the gradle build to ensure correct task processing 2025-06-18 15:54:00 +02:00
Abhinav CillankiandAdam Saghy 159eff0ad4 FINERACT-2309: Emit external events on document upload and delete 2025-06-18 12:20:36 +02:00
Adam Saghy 6cb60f48fc FINERACT-2181: Some tweaks in the gradle build to ensure correct task processing 2025-05-25 22:12:22 +02:00
Adam Saghy ecac6d2153 FINERACT-2181: Format enums 2025-05-22 17:13:49 +02:00
viktorpavlenkoandAdam Saghy ef47989656 FINERACT-2169: Refactor image api resource; 2025-03-19 12:27:05 +01:00
viktorpavlenkoandAdam Saghy ac8f62db51 FINERACT-2169: Refactor document management api and update swagger doc; 2025-03-19 12:26:37 +01:00
Marta JankovicsandAdam Saghy f48f94c454 FINERACT-2091: Support for string type primary keys 2024-06-13 20:29:23 +02:00
Jose Alberto HernandezandAdam Saghy a3fb836b73 FINERACT-1932: Fineract modularization - fineract-charge 2024-05-21 22:53:36 +02:00
Jose Alberto HernandezandAdam Saghy e13a9cba01 FINERACT-2073: Client search v2 using Client Identifiers 2024-05-21 11:32:15 +02:00
Jose Alberto HernandezandAdam Saghy 2b9e114c05 FINERACT-1932: Fineract modularization - fineract-document 2024-04-19 15:32:04 +02:00