From 2ad313423ef5319179bf9e1af6bea7dfaee280ad Mon Sep 17 00:00:00 2001 From: Oscar Eriksson Date: Wed, 13 Nov 2024 11:03:14 +0100 Subject: [PATCH] Ignore GDPR trained status for members on non manage account groups --- .../AccountScaffoldFacade.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/it/chalmers/gamma/app/accountscaffold/AccountScaffoldFacade.java b/app/src/main/java/it/chalmers/gamma/app/accountscaffold/AccountScaffoldFacade.java index 9e9fb3ba3..d21ea9fa6 100644 --- a/app/src/main/java/it/chalmers/gamma/app/accountscaffold/AccountScaffoldFacade.java +++ b/app/src/main/java/it/chalmers/gamma/app/accountscaffold/AccountScaffoldFacade.java @@ -41,6 +41,7 @@ public AccountScaffoldFacade( /** * Get all super groups that have the provided types and their "sub" groups with their members. + * For groups that require managed accounts, only users that have participated in gdpr training are included. */ public List getActiveSuperGroups() { this.accessGuard.require(isApi(ApiKeyType.ACCOUNT_SCAFFOLD)); @@ -62,7 +63,9 @@ public List getActiveSuperGroups() { group -> { List activeGroupMember = group.groupMembers().stream() - .filter(groupMember -> gdprTrained.contains(groupMember.user().id())) + .filter(groupMember -> + gdprTrained.contains(groupMember.user().id()) || + !isGroupWithManagedAccounts(group, settings)) .map(AccountScaffoldUserPostDTO::new) .toList(); @@ -107,13 +110,7 @@ public List getActiveUsers() { this.apiKeySettingsRepository.getAccountScaffoldSettings(apiAuthentication.get().id()); return this.groupRepository.getAll().stream() - .filter( - group -> - settings.superGroupTypes().stream() - .anyMatch( - row -> - (row.type().equals(group.superGroup().type())) - && row.requiresManaged())) + .filter(group -> isGroupWithManagedAccounts(group, settings)) .flatMap(group -> group.groupMembers().stream()) .map(GroupMember::user) .distinct() @@ -211,5 +208,13 @@ private SuperGroupWithGroups(SuperGroup superGroup, List group } } + private boolean isGroupWithManagedAccounts(Group group, ApiKeyAccountScaffoldSettings settings) { + return settings.superGroupTypes().stream() + .anyMatch( + row -> + row.type().equals(group.superGroup().type()) + && row.requiresManaged()); + } + }