DM-406 - update master realm theme on tenant creation

This commit is contained in:
Andrei Isvoran 2023-09-07 11:15:56 +02:00 committed by Timo Bejan
parent 3b29517363
commit fc025ae440
4 changed files with 15 additions and 34 deletions

View File

@ -21,22 +21,11 @@ public class RealmService {
private final TenantUserManagementProperties tenantUserManagementProperties;
public final static String MASTER_REALM = "master";
public RealmResource realm(String tenantId) {
return keycloak.getAdminClient().realm(tenantId);
}
@PostConstruct
public void updateTheme() {
log.info("Updating master realm theme: {}", tenantUserManagementProperties.getLoginTheme());
RealmRepresentation realmRepresentation = realm(MASTER_REALM).toRepresentation();
realmRepresentation.setLoginTheme(tenantUserManagementProperties.getLoginTheme());
realm(MASTER_REALM).update(realmRepresentation);
}
public String getEmail(RealmResource resource) {
var user = resource.users().list().stream().filter(userRepresentation -> userRepresentation.getUsername().equals("admin")).findFirst();
return user.isPresent() ? user.get().getEmail() : "";

View File

@ -63,6 +63,7 @@ public class TenantManagementService implements TenantProvider {
private static final String FRONTEND_URL_PROPERTY = "frontendUrl";
private static final Set<String> SUPPORTED_DATABASES = Set.of("postgresql");
private static final String PASSWORD = "**********";
private static final String MASTER_REALM = "master";
private final EncryptionDecryptionService encryptionService;
private final TenantRepository tenantRepository;
@ -82,6 +83,9 @@ public class TenantManagementService implements TenantProvider {
@SneakyThrows
public TenantResponse createTenant(TenantRequest tenantRequest) {
// For now we update the master realm theme whenever we create the tenant
updateMasterTheme(tenantUserManagementProperties.getLoginTheme());
log.info("Tenants are: {}", tenantRepository.findAll().stream().map(TenantEntity::getTenantId).toList());
log.info("Requested to create tenant for: {}", tenantRequest.getTenantId());
@ -564,4 +568,12 @@ public class TenantManagementService implements TenantProvider {
}
}
private void updateMasterTheme(String loginTheme) {
log.info("Updating master realm theme: {}", loginTheme);
RealmRepresentation realmRepresentation = realmService.realm(MASTER_REALM).toRepresentation();
realmRepresentation.setLoginTheme(loginTheme);
realmService.realm(MASTER_REALM).update(realmRepresentation);
}
}

View File

@ -56,6 +56,9 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest {
assertThat(tenantsClient.getTenants().stream().anyMatch(t -> t.getTenantId().equals("new_tenant"))).isTrue();
var realm = realmService.realm("master").toRepresentation();
assertThat(realm.getLoginTheme()).isEqualTo("redaction");
TenantContext.clear();
}

View File

@ -1,23 +0,0 @@
package com.knecon.fforesight.tests;
import static com.knecon.fforesight.tenantusermanagement.service.RealmService.MASTER_REALM;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.knecon.fforesight.AbstractTenantUserManagementIntegrationTest;
import com.knecon.fforesight.tenantusermanagement.service.RealmService;
public class ThemeTest extends AbstractTenantUserManagementIntegrationTest {
@Autowired
private RealmService realmService;
@Test
public void testLoginTheme() {
var realm = realmService.realm(MASTER_REALM).toRepresentation();
assertThat(realm.getLoginTheme()).isEqualTo("redaction");
}
}