diff --git a/src/main/java/com/knecon/fforesight/tenantcommons/EncryptionDecryptionService.java b/src/main/java/com/knecon/fforesight/tenantcommons/EncryptionDecryptionService.java index 3183ac7..8d45d32 100644 --- a/src/main/java/com/knecon/fforesight/tenantcommons/EncryptionDecryptionService.java +++ b/src/main/java/com/knecon/fforesight/tenantcommons/EncryptionDecryptionService.java @@ -22,7 +22,7 @@ import lombok.SneakyThrows; @Service public class EncryptionDecryptionService { - @Value("${pdftron-redaction-service.crypto.key:redaction}") + @Value("${fforesight.tenant-commons.crypto.key:fforesight}") private String key; private SecretKey secretKey; diff --git a/src/main/java/com/knecon/fforesight/tenantcommons/MultiTenancyAutoConfiguration.java b/src/main/java/com/knecon/fforesight/tenantcommons/MultiTenancyAutoConfiguration.java index 30e9ee3..c056155 100644 --- a/src/main/java/com/knecon/fforesight/tenantcommons/MultiTenancyAutoConfiguration.java +++ b/src/main/java/com/knecon/fforesight/tenantcommons/MultiTenancyAutoConfiguration.java @@ -1,10 +1,20 @@ package com.knecon.fforesight.tenantcommons; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -@ComponentScan -@Configuration +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@AutoConfiguration +@ComponentScan(basePackageClasses = MultiTenancyAutoConfiguration.class) public class MultiTenancyAutoConfiguration { + @PostConstruct + public void postConstruct() { + + log.info("MultiTenancy AutoConfiguration Loaded!"); + } + } diff --git a/src/main/java/com/knecon/fforesight/tenantcommons/StorageConnectionProviderImpl.java b/src/main/java/com/knecon/fforesight/tenantcommons/StorageConnectionProviderImpl.java index 9e29b01..16bb7d5 100644 --- a/src/main/java/com/knecon/fforesight/tenantcommons/StorageConnectionProviderImpl.java +++ b/src/main/java/com/knecon/fforesight/tenantcommons/StorageConnectionProviderImpl.java @@ -2,7 +2,6 @@ package com.knecon.fforesight.tenantcommons; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.stereotype.Service; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import com.iqser.red.storage.commons.service.StorageConnectionProvider; @@ -13,14 +12,14 @@ import lombok.RequiredArgsConstructor; @ConditionalOnClass(StorageConnectionProvider.class) public class StorageConnectionProviderImpl implements StorageConnectionProvider { - private final TenantsClient tenantsClient; + private final TenantProvider tenantProvider; private final EncryptionDecryptionService encryptionDecryptionService; @Override public com.iqser.red.storage.commons.model.AzureStorageConnection getAzureStorageConnection(String tenantId) { - var tenant = tenantsClient.getTenant(tenantId); + var tenant = tenantProvider.getTenant(tenantId); return com.iqser.red.storage.commons.model.AzureStorageConnection.builder() .connectionString(encryptionDecryptionService.decrypt(tenant.getAzureStorageConnection().getConnectionString())) .containerName(tenant.getAzureStorageConnection().getContainerName()) @@ -31,7 +30,7 @@ public class StorageConnectionProviderImpl implements StorageConnectionProvider @Override public com.iqser.red.storage.commons.model.S3StorageConnection getS3StorageConnection(String tenantId) { - var tenant = tenantsClient.getTenant(tenantId); + var tenant = tenantProvider.getTenant(tenantId); return com.iqser.red.storage.commons.model.S3StorageConnection.builder() .key(tenant.getS3StorageConnection().getKey()) .secret(encryptionDecryptionService.decrypt(tenant.getS3StorageConnection().getSecret())) diff --git a/src/main/java/com/knecon/fforesight/tenantcommons/TenantProvider.java b/src/main/java/com/knecon/fforesight/tenantcommons/TenantProvider.java new file mode 100644 index 0000000..08b8958 --- /dev/null +++ b/src/main/java/com/knecon/fforesight/tenantcommons/TenantProvider.java @@ -0,0 +1,14 @@ +package com.knecon.fforesight.tenantcommons; + +import java.util.List; + +import com.knecon.fforesight.tenantcommons.model.TenantResponse; + +public interface TenantProvider { + + TenantResponse getTenant(String tenantId); + + + List getTenants(); + +} diff --git a/src/main/java/com/knecon/fforesight/tenantcommons/TenantsClient.java b/src/main/java/com/knecon/fforesight/tenantcommons/TenantsClient.java index a558fb6..db76b11 100644 --- a/src/main/java/com/knecon/fforesight/tenantcommons/TenantsClient.java +++ b/src/main/java/com/knecon/fforesight/tenantcommons/TenantsClient.java @@ -1,5 +1,8 @@ package com.knecon.fforesight.tenantcommons; +import java.util.List; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -9,9 +12,10 @@ import org.springframework.web.bind.annotation.ResponseStatus; import com.knecon.fforesight.tenantcommons.model.TenantResponse; -@FeignClient(name = "TenantsResource", url = "${persistence-service.url}") +@FeignClient(name = "TenantsResource", url = "${tenant-user-management-service.url}") @ResponseStatus(value = HttpStatus.OK) -public interface TenantsClient { +@ConditionalOnProperty(prefix = "fforesight.springdoc", value = "remote", havingValue = "true") +public interface TenantsClient extends TenantProvider { String TENANT_PATH = "/internal-api/tenants"; String TENANT_ID_PARAM = "tenantId"; @@ -21,4 +25,8 @@ public interface TenantsClient { @GetMapping(value = TENANT_PATH + TENANT_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE) TenantResponse getTenant(@PathVariable(TENANT_ID_PARAM) String tenantId); + + @GetMapping(value = TENANT_PATH, produces = MediaType.APPLICATION_JSON_VALUE) + List getTenants(); + } diff --git a/src/main/java/com/knecon/fforesight/tenantcommons/model/AuthDetails.java b/src/main/java/com/knecon/fforesight/tenantcommons/model/AuthDetails.java new file mode 100644 index 0000000..8be03cd --- /dev/null +++ b/src/main/java/com/knecon/fforesight/tenantcommons/model/AuthDetails.java @@ -0,0 +1,18 @@ +package com.knecon.fforesight.tenantcommons.model; + +import com.fasterxml.jackson.annotation.JsonAlias; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AuthDetails { + + private String issuer; + @JsonAlias("jwks_uri") + private String jwksUri; +} diff --git a/src/main/java/com/knecon/fforesight/tenantcommons/model/TenantResponse.java b/src/main/java/com/knecon/fforesight/tenantcommons/model/TenantResponse.java index cb973d0..5b8a353 100644 --- a/src/main/java/com/knecon/fforesight/tenantcommons/model/TenantResponse.java +++ b/src/main/java/com/knecon/fforesight/tenantcommons/model/TenantResponse.java @@ -19,5 +19,6 @@ public class TenantResponse { private SearchConnection searchConnection; private AzureStorageConnection azureStorageConnection; private S3StorageConnection s3StorageConnection; + private AuthDetails authDetails; }