From 0459bc94d77997f87aac158f40c2ed19ff69a72e Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Wed, 3 Sep 2025 13:13:36 +0200 Subject: [PATCH 1/4] [NAE-2194] Global role creation fix Replaced single role fetch with a paginated query to ensure proper handling of multiple records and avoid potential conflicts. Adjusted logic to check for empty content in the paginated result. --- .../application/engine/importer/service/Importer.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java index 8cac15aad9..d246bec9dc 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java @@ -43,6 +43,7 @@ import lombok.extern.slf4j.Slf4j; import org.bson.types.ObjectId; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; import org.springframework.transaction.annotation.Transactional; import jakarta.xml.bind.JAXBContext; @@ -1066,7 +1067,7 @@ protected void createRole(Role importRole) { if (shouldInitializeRole(importRole)) { role = initRole(importRole); } else { - role = processRoleService.findByImportId(ProcessRole.GLOBAL + importRole.getId()); + role = processRoleService.findAllByImportId(ProcessRole.GLOBAL + importRole.getId(), Pageable.ofSize(1)).getContent().getFirst(); } role.set_id(new ProcessResourceId(new ObjectId(net.getStringId()))); @@ -1076,7 +1077,7 @@ protected void createRole(Role importRole) { protected boolean shouldInitializeRole(Role importRole) { return importRole.isGlobal() == null || !importRole.isGlobal() || - (importRole.isGlobal() && processRoleService.findByImportId(ProcessRole.GLOBAL + importRole.getId()) == null); + (importRole.isGlobal() && processRoleService.findAllByImportId(ProcessRole.GLOBAL + importRole.getId(), Pageable.ofSize(1)).getContent().isEmpty()); } protected ProcessRole initRole(Role importRole) { From ef42181bb0485c34a8ac399cbb75789249f40ae3 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Thu, 4 Sep 2025 12:33:16 +0200 Subject: [PATCH 2/4] [NAE-2194] Global role creation fix Updated role ID generation logic in Importer to ensure proper assignment based on global or process-specific scope. Added getter for pagination properties in UserServiceImpl for better access. Removed unused `countAll` method from UserRepository to clean up unused code. --- .../netgrif/application/engine/importer/service/Importer.java | 2 ++ .../application/engine/auth/service/UserServiceImpl.java | 1 + .../application/engine/auth/repository/UserRepository.java | 4 ---- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java index d246bec9dc..33acee1029 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java @@ -1091,8 +1091,10 @@ protected ProcessRole initRole(Role importRole) { role.setName(toI18NString(importRole.getName())); } if (importRole.isGlobal() != null && importRole.isGlobal()) { + role.set_id(new ProcessResourceId(new ObjectId())); role.setGlobal(importRole.isGlobal()); } else { + role.set_id(new ProcessResourceId(new ObjectId(net.getStringId()))); role.setProcessId(net.getStringId()); role.setProcessTitle(net.getTitle()); role.setProcessIdentifier(net.getIdentifier()); diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java index 309e6d27df..bd079dd098 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java @@ -57,6 +57,7 @@ public class UserServiceImpl implements UserService { private AbstractUser systemUser; + @Getter private PaginationProperties paginationProperties; @Autowired diff --git a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/repository/UserRepository.java b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/repository/UserRepository.java index 5f586ea044..c7e6e85d7d 100644 --- a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/repository/UserRepository.java +++ b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/repository/UserRepository.java @@ -56,10 +56,6 @@ default Page findAll(Predicate predicate, Pageable pageable) { throw new UnsupportedOperationException("This method is not supported. Use 'UserRepository.findAll(Predicate, Pageable, MongoTemplate, Collection)' instead.'"); } - default long countAll(String collection, MongoTemplate mongoTemplate) { - return mongoTemplate.count(new Query(), User.class, collection); - } - /** * Throws an exception since this method is not supported. * Use {@link #deleteAll(MongoTemplate, Collection)} instead. From f6f0fb55173a1745c781c01be284454d0d894901 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Fri, 5 Sep 2025 13:33:47 +0200 Subject: [PATCH 3/4] Update admin role assignment method documentation Refine Javadoc to clarify the behavior of assigning process roles to admin users. Explicitly state that roles are added as a union, duplicates are ignored, and no roles are removed. Simplify parameter description for better readability. --- .../application/engine/auth/service/UserService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/UserService.java b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/UserService.java index b26271417d..7f02fe0b01 100644 --- a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/UserService.java +++ b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/UserService.java @@ -401,10 +401,10 @@ Page searchAllCoMembers(String query, Collection roles) {}; + default void updateAdminWithRoles(Collection roles) {} } From 04198c274e798dace7284167cda823acd6673c46 Mon Sep 17 00:00:00 2001 From: Milan Mladoniczky <6153201+tuplle@users.noreply.github.com> Date: Fri, 5 Sep 2025 22:45:25 +0200 Subject: [PATCH 4/4] [NAE-2194] Global role creation fix - Remove redundant `_id` assignment in Importer class --- .../netgrif/application/engine/importer/service/Importer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java index 33acee1029..9b7c2bb0c9 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java @@ -49,6 +49,7 @@ import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; import jakarta.xml.bind.Unmarshaller; + import java.io.*; import java.nio.file.Path; import java.util.*; @@ -1069,7 +1070,6 @@ protected void createRole(Role importRole) { } else { role = processRoleService.findAllByImportId(ProcessRole.GLOBAL + importRole.getId(), Pageable.ofSize(1)).getContent().getFirst(); } - role.set_id(new ProcessResourceId(new ObjectId(net.getStringId()))); net.addRole(role); roles.put(importRole.getId(), role);