From edd6b87566083956f344aa0c50bf516181763dcd Mon Sep 17 00:00:00 2001 From: yhampe Date: Wed, 20 Nov 2024 08:57:30 +0100 Subject: [PATCH 1/7] RED-9393 user stats controller added filter for hard deleted dossiers --- .../v1/external/api/impl/controller/UserStatsController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java index 9b801cb9b..fa3baa720 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java @@ -38,6 +38,7 @@ public class UserStatsController implements UserStatsResource { List dossierOwnerships = new ArrayList<>(); dossierService.getAllDossiers() .stream() + .filter(dossierEntity -> dossierEntity.getHardDeletedTime() != null) .forEach(d -> { if (dossierACLService.getMembers(d.getId()).contains(userId)) { dossierMemberships.add(d.getId()); From 8c7e64ffad94666c76f44d4bd6d712f2bdc70c0c Mon Sep 17 00:00:00 2001 From: yhampe Date: Wed, 20 Nov 2024 08:57:49 +0100 Subject: [PATCH 2/7] RED-9393 user stats controller added filter for hard deleted dossiers --- .../v1/external/api/impl/controller/UserStatsController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java index fa3baa720..934d412cd 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java @@ -38,7 +38,7 @@ public class UserStatsController implements UserStatsResource { List dossierOwnerships = new ArrayList<>(); dossierService.getAllDossiers() .stream() - .filter(dossierEntity -> dossierEntity.getHardDeletedTime() != null) + .filter(dossierEntity -> dossierEntity.getHardDeletedTime() == null) .forEach(d -> { if (dossierACLService.getMembers(d.getId()).contains(userId)) { dossierMemberships.add(d.getId()); From 12136e0fdc0844df1ba0f7214093bed733738b9d Mon Sep 17 00:00:00 2001 From: yhampe Date: Wed, 20 Nov 2024 08:57:30 +0100 Subject: [PATCH 3/7] RED-9393 user stats controller added filter for hard deleted dossiers --- .../v1/external/api/impl/controller/UserStatsController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java index 9b801cb9b..fa3baa720 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java @@ -38,6 +38,7 @@ public class UserStatsController implements UserStatsResource { List dossierOwnerships = new ArrayList<>(); dossierService.getAllDossiers() .stream() + .filter(dossierEntity -> dossierEntity.getHardDeletedTime() != null) .forEach(d -> { if (dossierACLService.getMembers(d.getId()).contains(userId)) { dossierMemberships.add(d.getId()); From 4a32f55b6176a5b14cc56f07d4df0a5a64645bdc Mon Sep 17 00:00:00 2001 From: yhampe Date: Wed, 20 Nov 2024 08:57:49 +0100 Subject: [PATCH 4/7] RED-9393 user stats controller added filter for hard deleted dossiers --- .../v1/external/api/impl/controller/UserStatsController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java index fa3baa720..934d412cd 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java @@ -38,7 +38,7 @@ public class UserStatsController implements UserStatsResource { List dossierOwnerships = new ArrayList<>(); dossierService.getAllDossiers() .stream() - .filter(dossierEntity -> dossierEntity.getHardDeletedTime() != null) + .filter(dossierEntity -> dossierEntity.getHardDeletedTime() == null) .forEach(d -> { if (dossierACLService.getMembers(d.getId()).contains(userId)) { dossierMemberships.add(d.getId()); From 072c965593ef43217ca933d813f9e829e49cc382 Mon Sep 17 00:00:00 2001 From: yhampe Date: Thu, 21 Nov 2024 09:00:30 +0100 Subject: [PATCH 5/7] RED-9393 user stats controller added filter for soft deleted dossiers --- .../v1/external/api/impl/controller/UserStatsController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java index 934d412cd..c58a78a25 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java @@ -8,6 +8,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RestController; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.DossierService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; @@ -32,13 +33,14 @@ public class UserStatsController implements UserStatsResource { public ResponseEntity getUserStats(String userId) { if (userService.getUserById(userId).isEmpty()) { - return new ResponseEntity(null, HttpStatus.NOT_FOUND); + throw new NotFoundException(String.format("The user with id %s is not found.", userId)); } List dossierMemberships = new ArrayList<>(); List dossierOwnerships = new ArrayList<>(); dossierService.getAllDossiers() .stream() .filter(dossierEntity -> dossierEntity.getHardDeletedTime() == null) + .filter(dossierEntity -> dossierEntity.getSoftDeletedTime() == null) .forEach(d -> { if (dossierACLService.getMembers(d.getId()).contains(userId)) { dossierMemberships.add(d.getId()); From c7a9c2ff11d2053255d49adfec3ee9fbd89a4c15 Mon Sep 17 00:00:00 2001 From: yhampe Date: Fri, 22 Nov 2024 08:38:51 +0100 Subject: [PATCH 6/7] RED-9393 user stats controller added action roles --- .../v1/processor/roles/ApplicationRoles.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/roles/ApplicationRoles.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/roles/ApplicationRoles.java index 05ced6d54..c2fbb290a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/roles/ApplicationRoles.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/roles/ApplicationRoles.java @@ -26,7 +26,7 @@ public final class ApplicationRoles { GET_TENANTS, CREATE_TENANT, READ_USERS, - READ_ALL_USERS, + READ_ALL_USERS, READ_USER_STATS, WRITE_USERS, READ_SMTP_CONFIGURATION, WRITE_SMTP_CONFIGURATION, @@ -63,7 +63,7 @@ public final class ApplicationRoles { READ_COLORS, READ_DICTIONARY_TYPES, READ_DIGITAL_SIGNATURE, - READ_DOSSIER, + READ_DOSSIER, READ_USER_STATS, READ_DOSSIER_ATTRIBUTES, READ_DOSSIER_ATTRIBUTES_CONFIG, READ_DOSSIER_TEMPLATES, @@ -119,7 +119,7 @@ public final class ApplicationRoles { READ_FILE_ATTRIBUTES_CONFIG, READ_LEGAL_BASIS, READ_LICENSE_REPORT, - READ_NOTIFICATIONS, + READ_NOTIFICATIONS, READ_USER_STATS, READ_RULES, READ_DATA_FORMATS, READ_SMTP_CONFIGURATION, @@ -146,7 +146,7 @@ public final class ApplicationRoles { GET_TENANTS, DEPLOYMENT_INFO); - public static final Set RED_MANAGER_ACTION_ROLES = Sets.newHashSet(ADD_UPDATE_DOSSIER, ARCHIVE_DOSSIER, DELETE_DOSSIER, WRITE_DOSSIER_ATTRIBUTES); + public static final Set RED_MANAGER_ACTION_ROLES = Sets.newHashSet(ADD_UPDATE_DOSSIER, ARCHIVE_DOSSIER, DELETE_DOSSIER, READ_USER_STATS, WRITE_DOSSIER_ATTRIBUTES); public static final Set RED_USER_ADMIN_ACTION_ROLES = Sets.newHashSet(MANAGE_USER_PREFERENCES, READ_ALL_USERS, @@ -154,7 +154,7 @@ public final class ApplicationRoles { READ_GENERAL_CONFIGURATION, READ_GENERAL_CONFIGURATION, GET_SIMILAR_IMAGES, - READ_NOTIFICATIONS, + READ_NOTIFICATIONS, READ_USER_STATS, READ_USERS, UPDATE_MY_PROFILE, UPDATE_NOTIFICATIONS, From fa0e29095f3006fbd4656b92f1f140d33ea5c9ee Mon Sep 17 00:00:00 2001 From: yhampe Date: Fri, 22 Nov 2024 08:43:29 +0100 Subject: [PATCH 7/7] RED-9393 user stats controller added authority check --- .../v1/external/api/impl/controller/UserStatsController.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java index c58a78a25..6350e3a65 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java @@ -1,10 +1,13 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_USER_STATS; + import java.util.ArrayList; import java.util.List; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.RestController; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; @@ -30,6 +33,7 @@ public class UserStatsController implements UserStatsResource { @Override + @PreAuthorize("hasAuthority('" + READ_USER_STATS + "')") public ResponseEntity getUserStats(String userId) { if (userService.getUserById(userId).isEmpty()) {