diff --git a/fineract-doc/src/docs/en/chapters/appendix/properties-database.adoc b/fineract-doc/src/docs/en/chapters/appendix/properties-database.adoc index 988a9c38f..074afbaed 100644 --- a/fineract-doc/src/docs/en/chapters/appendix/properties-database.adoc +++ b/fineract-doc/src/docs/en/chapters/appendix/properties-database.adoc @@ -63,4 +63,35 @@ |FINERACT_LIQUIBASE_ENABLED |true |TBD + +|fineract.tenant.read-only-name +|FINERACT_DEFAULT_TENANTDB_RO_NAME +| +| + +|fineract.tenant.read-only-host +|FINERACT_DEFAULT_TENANTDB_RO_HOSTNAME +| +| + +|fineract.tenant.read-only-port +|FINERACT_DEFAULT_TENANTDB_RO_PORT +| +| + +|fineract.tenant.read-only-username +|FINERACT_DEFAULT_TENANTDB_RO_UID +| +| + +|fineract.tenant.read-only-password +|FINERACT_DEFAULT_TENANTDB_RO_PWD +| +| + +|fineract.tenant.read-only-parameters +|FINERACT_DEFAULT_TENANTDB_RO_CONN_PARAMS +| +| + |=== diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java index 0ee0bc852..ad4abe2f3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java @@ -80,6 +80,12 @@ public class FineractProperties { private String masterPassword; private String encryption; + private String readOnlyHost; + private Integer readOnlyPort; + private String readOnlyUsername; + private String readOnlyPassword; + private String readOnlyParameters; + private String readOnlyName; } @Getter diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java index 623c49532..ae5828e79 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java @@ -29,6 +29,7 @@ import liquibase.exception.LiquibaseException; import liquibase.integration.spring.SpringLiquibase; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.fineract.infrastructure.core.boot.FineractProfiles; import org.apache.fineract.infrastructure.core.config.FineractProperties; import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant; @@ -108,6 +109,13 @@ public class TenantDatabaseUpgradeService implements InitializingBean { log.info("- fineract.tenant.description: {}", fineractProperties.getTenant().getDescription()); log.info("- fineract.tenant.identifier: {}", fineractProperties.getTenant().getIdentifier()); log.info("- fineract.tenant.name: {}", fineractProperties.getTenant().getName()); + + log.info("- fineract.tenant.username: {}", fineractProperties.getTenant().getReadOnlyUsername()); + log.info("- fineract.tenant.password: {}", + StringUtils.isNotBlank(fineractProperties.getTenant().getReadOnlyPassword()) ? "****" : ""); + log.info("- fineract.tenant.parameters: {}", fineractProperties.getTenant().getReadOnlyParameters()); + log.info("- fineract.tenant.name: {}", fineractProperties.getTenant().getReadOnlyName()); + } private void upgradeIndividualTenants() throws LiquibaseException { diff --git a/fineract-provider/src/main/resources/application.properties b/fineract-provider/src/main/resources/application.properties index d5fa1c77f..0545d1b14 100644 --- a/fineract-provider/src/main/resources/application.properties +++ b/fineract-provider/src/main/resources/application.properties @@ -37,6 +37,13 @@ fineract.tenant.description=${FINERACT_DEFAULT_TENANTDB_DESCRIPTION:Default Demo fineract.tenant.master-password=${FINERACT_DEFAULT_TENANTDB_MASTER_PASSWORD:fineract} fineract.tenant.encrytion=${FINERACT_DEFAULT_TENANTDB_ENCRYPTION:"AES/CBC/PKCS5Padding"} +fineract.tenant.read-only-host=${FINERACT_DEFAULT_TENANTDB_RO_HOSTNAME:} +fineract.tenant.read-only-port=${FINERACT_DEFAULT_TENANTDB_RO_PORT:} +fineract.tenant.read-only-username=${FINERACT_DEFAULT_TENANTDB_RO_UID:} +fineract.tenant.read-only-password=${FINERACT_DEFAULT_TENANTDB_RO_PWD:} +fineract.tenant.read-only-parameters=${FINERACT_DEFAULT_TENANTDB_RO_CONN_PARAMS:} +fineract.tenant.read-only-name=${FINERACT_DEFAULT_TENANTDB_RO_NAME:} + fineract.mode.read-enabled=${FINERACT_MODE_READ_ENABLED:true} fineract.mode.write-enabled=${FINERACT_MODE_WRITE_ENABLED:true} fineract.mode.batch-worker-enabled=${FINERACT_MODE_BATCH_WORKER_ENABLED:true} @@ -190,6 +197,12 @@ spring.liquibase.parameters.fineract.tenant.port=${fineract.tenant.port} spring.liquibase.parameters.fineract.tenant.username=${fineract.tenant.username} spring.liquibase.parameters.fineract.tenant.password=${fineract.tenant.password} spring.liquibase.parameters.fineract.tenant.parameters=${fineract.tenant.parameters} +spring.liquibase.parameters.fineract.tenant.read-only-host=${fineract.tenant.read-only-host} +spring.liquibase.parameters.fineract.tenant.read-only-port=${fineract.tenant.read-only-port} +spring.liquibase.parameters.fineract.tenant.read-only-username=${fineract.tenant.read-only-username} +spring.liquibase.parameters.fineract.tenant.read-only-password=${fineract.tenant.read-only-password} +spring.liquibase.parameters.fineract.tenant.read-only-parameters=${fineract.tenant.read-only-parameters} +spring.liquibase.parameters.fineract.tenant.read-only-name=${fineract.tenant.read-only-name} springdoc.api-docs.path=${SPRINGDOC_API_DOCS_PATH:/api-docs} springdoc.api-docs.enabled=${SPRINGDOC_API_DOCS_ENABLED:true} diff --git a/fineract-provider/src/main/resources/db/changelog/tenant-store/changelog-tenant-store.xml b/fineract-provider/src/main/resources/db/changelog/tenant-store/changelog-tenant-store.xml index 42c4aba73..ae5bb4f01 100644 --- a/fineract-provider/src/main/resources/db/changelog/tenant-store/changelog-tenant-store.xml +++ b/fineract-provider/src/main/resources/db/changelog/tenant-store/changelog-tenant-store.xml @@ -28,4 +28,5 @@ + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant-store/parts/0009_set_and_encrypt_ro_if_not_exists.xml b/fineract-provider/src/main/resources/db/changelog/tenant-store/parts/0009_set_and_encrypt_ro_if_not_exists.xml new file mode 100644 index 000000000..abcd696a0 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant-store/parts/0009_set_and_encrypt_ro_if_not_exists.xml @@ -0,0 +1,41 @@ + + + + + + + SELECT count(1) FROM tenant_server_connections WHERE id = 1 and readonly_schema_password is null and readonly_schema_username is null and readonly_schema_name is null; + + + + + + + + + + + + +