Tenant Commons rework

This commit is contained in:
Timo Bejan 2023-05-04 10:48:19 +03:00
parent 1d849cddf5
commit 96febd7b7f
7 changed files with 60 additions and 10 deletions

View File

@ -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;

View File

@ -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!");
}
}

View File

@ -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()))

View File

@ -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<TenantResponse> getTenants();
}

View File

@ -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<TenantResponse> getTenants();
}

View File

@ -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;
}

View File

@ -19,5 +19,6 @@ public class TenantResponse {
private SearchConnection searchConnection;
private AzureStorageConnection azureStorageConnection;
private S3StorageConnection s3StorageConnection;
private AuthDetails authDetails;
}