diff --git a/src/main/java/de/itvsh/kop/user/UserResourceMapper.java b/src/main/java/de/itvsh/kop/user/UserResourceMapper.java index c3455d6e23e6c427349644f76b99798464a0418a..82f9c22b2d2af9b497bbc17ee19433ee52b32525 100644 --- a/src/main/java/de/itvsh/kop/user/UserResourceMapper.java +++ b/src/main/java/de/itvsh/kop/user/UserResourceMapper.java @@ -1,5 +1,6 @@ package de.itvsh.kop.user; +import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; @@ -10,7 +11,6 @@ import javax.inject.Inject; import org.keycloak.admin.client.resource.UserResource; import org.keycloak.representations.idm.ClientMappingsRepresentation; -import org.keycloak.representations.idm.GroupRepresentation; import org.keycloak.representations.idm.RoleRepresentation; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -43,13 +43,12 @@ public abstract class UserResourceMapper { } List<String> mapOrganisationsEinheitIds(UserResource userRes) { - return userRes.groups().stream() - .map(GroupRepresentation::getAttributes) - .filter(Objects::nonNull) - .map(attributeMap -> attributeMap.get(properties.organisationsEinheitIdKey())) - .filter(Objects::nonNull) - .map(attributeValues -> attributeValues.get(0)) - .toList(); + return getOrganisationsEinheitIdsFromUserAttributes(userRes); + } + + private List<String> getOrganisationsEinheitIdsFromUserAttributes(UserResource userResource) { + var attributes = userResource.toRepresentation().getAttributes(); + return attributes != null ? attributes.get(properties.organisationsEinheitIdKey()) : new ArrayList<>(); } List<String> mapRoles(UserResource userRes) { @@ -65,7 +64,8 @@ public abstract class UserResourceMapper { String mapId(UserResource userRes) { var userRepresentation = userRes.toRepresentation(); - var id = userRepresentation.getAttributes().get(properties.ldapIdKey()); + var attributes = userRepresentation.getAttributes(); + var id = attributes != null ? attributes.get(properties.ldapIdKey()) : null; return id != null ? id.get(0) : userRepresentation.getId(); } diff --git a/src/main/resources/application-remotekc.yaml b/src/main/resources/application-remotekc.yaml index cd0cdf9c0320520665e35e918241cb1406c308b9..f16c633e13820f042de61db668301921d9e4ffb1 100644 --- a/src/main/resources/application-remotekc.yaml +++ b/src/main/resources/application-remotekc.yaml @@ -6,5 +6,6 @@ usermanager: user: goofyApiUser password: S9UEMuLG9y9ev99 realm: sh-kiel-dev + organisations-einheit-id-key: organisationseinheitId keycloak: url: https://sso.dev.ozg-sh.de/auth \ No newline at end of file diff --git a/src/test/java/de/itvsh/kop/user/keycloak/KeycloakApiServiceITCase.java b/src/test/java/de/itvsh/kop/user/keycloak/KeycloakApiServiceITCase.java index 93e6cbb5fc55face82e3425bd2d633ba027dbf30..7dc6275081eacc25859c1887b38d75cba2573093 100644 --- a/src/test/java/de/itvsh/kop/user/keycloak/KeycloakApiServiceITCase.java +++ b/src/test/java/de/itvsh/kop/user/keycloak/KeycloakApiServiceITCase.java @@ -1,11 +1,11 @@ package de.itvsh.kop.user.keycloak; +import static org.assertj.core.api.Assertions.*; + import javax.inject.Inject; import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.*; - import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.TestProfile; @@ -18,7 +18,7 @@ class KeycloakApiServiceITCase { @Test void shouldGetAllUsers() { - var usersStream = service.findAllUser(); + var usersStream = service.findAllUser().toList(); assertThat(usersStream).isNotEmpty(); }