diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/UserResourceMapper.java b/user-manager-server/src/main/java/de/ozgcloud/user/UserResourceMapper.java index 51b2a9f56ee1b05bf590fad51da0f02b0f242dc7..ba7ca20c6921171be74ff1a758202e4cb35b5e8a 100644 --- a/user-manager-server/src/main/java/de/ozgcloud/user/UserResourceMapper.java +++ b/user-manager-server/src/main/java/de/ozgcloud/user/UserResourceMapper.java @@ -23,6 +23,7 @@ */ package de.ozgcloud.user; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashSet; @@ -78,22 +79,29 @@ public abstract class UserResourceMapper { Set<String> mapOrganisationsEinheitIds(UserResource userRes) { var groups = userRes.groups(); - var organisationsEinheitIds = getOrganisationsEinheitIdsFromGroups(groups); + var organisationsEinheitIds = Stream.concat( + getOrganisationsEinheitIdsFromGroups(groups), + getOrganisationsEinheitIdsFromUser(userRes) + ) + .filter(Objects::nonNull) + .filter(oeId -> !oeId.isBlank()) + .toList(); return new HashSet<>(organisationsEinheitIds); } - private List<String> getOrganisationsEinheitIdsFromGroups(List<GroupRepresentation> groups) { + private Stream<String> getOrganisationsEinheitIdsFromGroups(List<GroupRepresentation> groups) { return groups.stream() .map(this::mapGroup) .filter(Objects::nonNull) .map(attributeMap -> attributeMap.get(properties.organisationsEinheitIdKey())) .filter(Objects::nonNull) - .map(attributeValues -> attributeValues.get(0)) - .toList(); + .flatMap(Collection::stream); } - private List<String> getOrganisationsEinheitIdsFromUser(UserResource userRes) { - return List.of(); + private Stream<String> getOrganisationsEinheitIdsFromUser(UserResource userRes) { + return Optional.ofNullable(userRes.toRepresentation().getAttributes().get(properties.organisationsEinheitIdKey())) + .orElse(List.of()) + .stream(); } private Map<String, List<String>> mapGroup(GroupRepresentation group) { diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/UserResourceMapperTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/UserResourceMapperTest.java index 1c2218a1ce66485fe8b554edb88bf38f3214e961..ef790b9a137fd722f8a67552fa915e2ed28a8055 100644 --- a/user-manager-server/src/test/java/de/ozgcloud/user/UserResourceMapperTest.java +++ b/user-manager-server/src/test/java/de/ozgcloud/user/UserResourceMapperTest.java @@ -270,8 +270,6 @@ class UserResourceMapperTest { @Mock RoleMappingResource roleMappingResource; @Mock - RoleScopeResource roleScopeResource; - @Mock MappingsRepresentation mappingsRepresentation; @Mock Map<String, ClientMappingsRepresentation> clientMappingsRepresentation;