From cccc52d53e5d4ac38d92be9bf58729a393de350d Mon Sep 17 00:00:00 2001 From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de> Date: Mon, 14 Oct 2024 15:15:52 +0200 Subject: [PATCH] OZG-6897 map organisations einheit ids from user attributes also allow to map multiple oeIds from groups --- .../de/ozgcloud/user/UserResourceMapper.java | 20 +++++++++++++------ .../ozgcloud/user/UserResourceMapperTest.java | 2 -- 2 files changed, 14 insertions(+), 8 deletions(-) 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 51b2a9f5..ba7ca20c 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 1c2218a1..ef790b9a 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; -- GitLab