fix: show public endpoint instead of internal Docker URL in tenant settings
Closes #51 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ import net.siegeln.cameleer.saas.identity.LogtoManagementClient;
|
|||||||
import net.siegeln.cameleer.saas.identity.ServerApiClient;
|
import net.siegeln.cameleer.saas.identity.ServerApiClient;
|
||||||
import net.siegeln.cameleer.saas.license.LicenseEntity;
|
import net.siegeln.cameleer.saas.license.LicenseEntity;
|
||||||
import net.siegeln.cameleer.saas.license.LicenseService;
|
import net.siegeln.cameleer.saas.license.LicenseService;
|
||||||
|
import net.siegeln.cameleer.saas.provisioning.ProvisioningProperties;
|
||||||
import net.siegeln.cameleer.saas.provisioning.TenantProvisioner;
|
import net.siegeln.cameleer.saas.provisioning.TenantProvisioner;
|
||||||
import net.siegeln.cameleer.saas.tenant.TenantEntity;
|
import net.siegeln.cameleer.saas.tenant.TenantEntity;
|
||||||
import net.siegeln.cameleer.saas.tenant.TenantService;
|
import net.siegeln.cameleer.saas.tenant.TenantService;
|
||||||
@@ -24,17 +25,20 @@ public class TenantPortalService {
|
|||||||
private final ServerApiClient serverApiClient;
|
private final ServerApiClient serverApiClient;
|
||||||
private final LogtoManagementClient logtoClient;
|
private final LogtoManagementClient logtoClient;
|
||||||
private final TenantProvisioner tenantProvisioner;
|
private final TenantProvisioner tenantProvisioner;
|
||||||
|
private final ProvisioningProperties provisioningProps;
|
||||||
|
|
||||||
public TenantPortalService(TenantService tenantService,
|
public TenantPortalService(TenantService tenantService,
|
||||||
LicenseService licenseService,
|
LicenseService licenseService,
|
||||||
ServerApiClient serverApiClient,
|
ServerApiClient serverApiClient,
|
||||||
LogtoManagementClient logtoClient,
|
LogtoManagementClient logtoClient,
|
||||||
TenantProvisioner tenantProvisioner) {
|
TenantProvisioner tenantProvisioner,
|
||||||
|
ProvisioningProperties provisioningProps) {
|
||||||
this.tenantService = tenantService;
|
this.tenantService = tenantService;
|
||||||
this.licenseService = licenseService;
|
this.licenseService = licenseService;
|
||||||
this.serverApiClient = serverApiClient;
|
this.serverApiClient = serverApiClient;
|
||||||
this.logtoClient = logtoClient;
|
this.logtoClient = logtoClient;
|
||||||
this.tenantProvisioner = tenantProvisioner;
|
this.tenantProvisioner = tenantProvisioner;
|
||||||
|
this.provisioningProps = provisioningProps;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Inner records ---
|
// --- Inner records ---
|
||||||
@@ -158,10 +162,12 @@ public class TenantPortalService {
|
|||||||
|
|
||||||
public TenantSettingsData getSettings() {
|
public TenantSettingsData getSettings() {
|
||||||
TenantEntity tenant = resolveTenant();
|
TenantEntity tenant = resolveTenant();
|
||||||
|
String publicEndpoint = provisioningProps.publicProtocol() + "://"
|
||||||
|
+ provisioningProps.publicHost() + "/t/" + tenant.getSlug() + "/";
|
||||||
return new TenantSettingsData(
|
return new TenantSettingsData(
|
||||||
tenant.getName(), tenant.getSlug(),
|
tenant.getName(), tenant.getSlug(),
|
||||||
tenant.getTier().name(), tenant.getStatus().name(),
|
tenant.getTier().name(), tenant.getStatus().name(),
|
||||||
tenant.getServerEndpoint(), tenant.getCreatedAt()
|
publicEndpoint, tenant.getCreatedAt()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import net.siegeln.cameleer.saas.identity.ServerApiClient;
|
|||||||
import net.siegeln.cameleer.saas.identity.ServerApiClient.ServerHealthResponse;
|
import net.siegeln.cameleer.saas.identity.ServerApiClient.ServerHealthResponse;
|
||||||
import net.siegeln.cameleer.saas.license.LicenseEntity;
|
import net.siegeln.cameleer.saas.license.LicenseEntity;
|
||||||
import net.siegeln.cameleer.saas.license.LicenseService;
|
import net.siegeln.cameleer.saas.license.LicenseService;
|
||||||
|
import net.siegeln.cameleer.saas.provisioning.ProvisioningProperties;
|
||||||
import net.siegeln.cameleer.saas.provisioning.TenantProvisioner;
|
import net.siegeln.cameleer.saas.provisioning.TenantProvisioner;
|
||||||
import net.siegeln.cameleer.saas.tenant.TenantEntity;
|
import net.siegeln.cameleer.saas.tenant.TenantEntity;
|
||||||
import net.siegeln.cameleer.saas.tenant.TenantService;
|
import net.siegeln.cameleer.saas.tenant.TenantService;
|
||||||
@@ -45,6 +46,9 @@ class TenantPortalServiceTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private TenantProvisioner tenantProvisioner;
|
private TenantProvisioner tenantProvisioner;
|
||||||
|
|
||||||
|
private final ProvisioningProperties provisioningProps = new ProvisioningProperties(
|
||||||
|
null, null, null, null, "test.example.com", "https", null, null, null, null);
|
||||||
|
|
||||||
private TenantPortalService tenantPortalService;
|
private TenantPortalService tenantPortalService;
|
||||||
|
|
||||||
private final UUID tenantId = UUID.randomUUID();
|
private final UUID tenantId = UUID.randomUUID();
|
||||||
@@ -52,7 +56,7 @@ class TenantPortalServiceTest {
|
|||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUp() {
|
void setUp() {
|
||||||
TenantContext.setTenantId(tenantId);
|
TenantContext.setTenantId(tenantId);
|
||||||
tenantPortalService = new TenantPortalService(tenantService, licenseService, serverApiClient, logtoClient, tenantProvisioner);
|
tenantPortalService = new TenantPortalService(tenantService, licenseService, serverApiClient, logtoClient, tenantProvisioner, provisioningProps);
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterEach
|
@AfterEach
|
||||||
@@ -185,7 +189,7 @@ class TenantPortalServiceTest {
|
|||||||
assertThat(result.slug()).isEqualTo("acme-corp");
|
assertThat(result.slug()).isEqualTo("acme-corp");
|
||||||
assertThat(result.tier()).isEqualTo("MID");
|
assertThat(result.tier()).isEqualTo("MID");
|
||||||
assertThat(result.status()).isEqualTo("ACTIVE");
|
assertThat(result.status()).isEqualTo("ACTIVE");
|
||||||
assertThat(result.serverEndpoint()).isEqualTo("http://server:8080");
|
assertThat(result.serverEndpoint()).isEqualTo("https://test.example.com/t/acme-corp/");
|
||||||
assertThat(result.createdAt()).isNull(); // no @PrePersist called in test, createdAt is null
|
assertThat(result.createdAt()).isNull(); // no @PrePersist called in test, createdAt is null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user