diff --git a/build.gradle.kts b/build.gradle.kts index bd39fd7..8e27a0c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -99,7 +99,7 @@ val persistenceServiceVersion = "2.561.0" dependencies { implementation("com.iqser.red.service:persistence-service-internal-api-v1:${persistenceServiceVersion}") - implementation("com.knecon.fforesight:database-tenant-commons:0.24.0") + implementation("com.knecon.fforesight:database-tenant-commons:0.28.0-RED10196.0") implementation("com.knecon.fforesight:keycloak-commons:0.28.0") implementation("com.knecon.fforesight:swagger-commons:0.7.0") implementation("com.knecon.fforesight:tracing-commons:0.5.0") diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/entity/TenantEntity.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/entity/TenantEntity.java index 0eb4f34..e6a8f3c 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/entity/TenantEntity.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/entity/TenantEntity.java @@ -3,6 +3,7 @@ package com.knecon.fforesight.tenantusermanagement.entity; import java.util.HashMap; import java.util.Map; +import com.knecon.fforesight.tenantcommons.TenantApplicationType; import com.knecon.fforesight.tenantusermanagement.utils.JSONMapConverter; import jakarta.persistence.Basic; @@ -10,6 +11,8 @@ import jakarta.persistence.Column; import jakarta.persistence.Convert; import jakarta.persistence.Embedded; import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.Table; @@ -53,6 +56,9 @@ public class TenantEntity { @Convert(converter = JSONMapConverter.class) @Builder.Default private Map details = new HashMap<>(); + @Column - private String applicationType; + @Enumerated(EnumType.STRING) + private TenantApplicationType applicationType; + } diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/model/CreateTenantRequest.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/model/CreateTenantRequest.java index 3283f2f..7c592d6 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/model/CreateTenantRequest.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/model/CreateTenantRequest.java @@ -3,6 +3,7 @@ package com.knecon.fforesight.tenantusermanagement.model; import java.util.ArrayList; import java.util.List; +import com.knecon.fforesight.tenantcommons.TenantApplicationType; import com.knecon.fforesight.tenantcommons.model.AzureStorageConnection; import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; import com.knecon.fforesight.tenantcommons.model.S3StorageConnection; @@ -48,4 +49,7 @@ public class CreateTenantRequest { @Schema(description = "Parameter containing a list of users of the tenant.") private List defaultUsers = new ArrayList<>(); + @Schema(description = "Parameter containing the application type of the tenant.") + private TenantApplicationType applicationType; + } diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/repository/TenantRepository.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/repository/TenantRepository.java index a88ecd9..369bbb2 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/repository/TenantRepository.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/repository/TenantRepository.java @@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import com.knecon.fforesight.tenantcommons.TenantApplicationType; import com.knecon.fforesight.tenantusermanagement.entity.TenantEntity; import jakarta.transaction.Transactional; @@ -16,10 +17,14 @@ public interface TenantRepository extends JpaRepository { @Query("select t from TenantEntity t where t.tenantId = :tenantId") Optional findByTenantId(@Param("tenantId") String tenantId); + @Transactional @Modifying(clearAutomatically = true, flushAutomatically = true) @Query("delete from TenantEntity t where t.id = :tenantId ") void deleteByQuery(String tenantId); + @Query("select t.applicationType from TenantEntity t where t.tenantId = :tenantId") + Optional findApplicationTypeByTenantId(@Param("tenantId") String tenantId); + } diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java index a483c11..cc13785 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java @@ -43,6 +43,7 @@ import com.azure.storage.blob.BlobServiceClientBuilder; import com.azure.storage.blob.models.BlobItem; import com.fasterxml.jackson.databind.JsonNode; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; +import com.knecon.fforesight.tenantcommons.TenantApplicationType; import com.knecon.fforesight.tenantcommons.TenantContext; import com.knecon.fforesight.tenantcommons.TenantProvider; import com.knecon.fforesight.tenantcommons.model.AzureStorageConnection; @@ -111,10 +112,6 @@ public class TenantManagementService implements TenantProvider { @Value("${fforesight.tenant-exchange.name}") private String tenantExchangeName; - @Value("${FFORESIGHT_TENANT_USER_MANAGEMENT_APPLICATION_NAME:RedactManager}") - private String applicationType; - - @SneakyThrows public TenantResponse createTenant(CreateTenantRequest tenantRequest) { @@ -143,6 +140,7 @@ public class TenantManagementService implements TenantProvider { .tenantId(tenantRequest.getTenantId()) .displayName(tenantRequest.getDisplayName()) .guid(UUID.randomUUID().toString()) + .applicationType(tenantRequest.getApplicationType()) .databaseConnection(DatabaseConnectionEntity.builder() .driver(databaseConnection.getDriver()) .host(databaseConnection.getHost()) @@ -218,7 +216,6 @@ public class TenantManagementService implements TenantProvider { log.info("Created default SMTP configuration."); - tenantEntity.setApplicationType(applicationType); var saved = tenantPersistenceService.save(tenantEntity); log.info("Persisted tenant: {}", tenantRequest.getTenantId()); @@ -824,6 +821,14 @@ public class TenantManagementService implements TenantProvider { } + @Override + public TenantApplicationType getTenantApplicationType(String tenantId) { + + return tenantRepository.findApplicationTypeByTenantId(tenantId) + .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Tenant does not exist")); + } + + public TenantResponse removePasswords(TenantResponse tenantResponse) { if (tenantResponse.getDatabaseConnection() != null) { diff --git a/src/test/java/com/knecon/fforesight/tenantusermanagement/utils/TestTenantService.java b/src/test/java/com/knecon/fforesight/tenantusermanagement/utils/TestTenantService.java index 3b72b71..cf461f8 100644 --- a/src/test/java/com/knecon/fforesight/tenantusermanagement/utils/TestTenantService.java +++ b/src/test/java/com/knecon/fforesight/tenantusermanagement/utils/TestTenantService.java @@ -11,6 +11,7 @@ import java.util.UUID; import org.springframework.stereotype.Service; +import com.knecon.fforesight.tenantcommons.TenantApplicationType; import com.knecon.fforesight.tenantcommons.model.MongoDBConnection; import com.knecon.fforesight.tenantusermanagement.feigntestclients.external.TenantsClient; import com.knecon.fforesight.tenantcommons.TenantContext; @@ -70,6 +71,7 @@ public class TestTenantService { .password("secret") .email("admin@knecon.com") .build())) + .applicationType(TenantApplicationType.RedactManager) .databaseConnection(DatabaseConnection.builder() .driver("postgresql") .host(SpringPostgreSQLTestContainer.getInstance().getHost())