diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java index a468461636..3e7d45cb4b 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java @@ -545,7 +545,6 @@ public void deletePetriNet(String processId, LoggedUser loggedUser, boolean forc PetriNet petriNet = petriNetOptional.get(); log.info("[{}]: Initiating deletion of Petri net {} version {}", processId, petriNet.getIdentifier(), petriNet.getVersion().toString()); - userService.removeRoleOfDeletedPetriNet(petriNet); workflowService.deleteInstancesOfPetriNet(petriNet, force); processRoleService.deleteRolesOfNet(petriNet, loggedUser); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java index 1c94340d3a..0c0f67233b 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java @@ -147,10 +147,6 @@ protected void assignRolesToActor(Collection oldActorRoles, Collect Set rolesNewToUser = getRolesNewToActor(userOldRoles, requestedRoles); Set rolesRemovedFromUser = getRolesRemovedFromActor(userOldRoles, requestedRoles); - String idOfPetriNetContainingRole = getProcessIdRoleBelongsTo(rolesNewToUser, rolesRemovedFromUser); - if (!isGlobalFromFirstRole(rolesNewToUser) && !isGlobalFromFirstRole(rolesRemovedFromUser) && idOfPetriNetContainingRole == null) { - return; - } oldActorRoles.clear(); oldActorRoles.addAll(updateRequestedRoles(userOldRoles, rolesNewToUser, rolesRemovedFromUser)); @@ -416,7 +412,7 @@ public Page findAllByDefaultName(String name, Pageable pageable) { @Override public void deleteRolesOfNet(PetriNet net, LoggedUser loggedUser) { log.info("[" + net.getStringId() + "]: Initiating deletion of all roles of Petri net " + net.getIdentifier() + " version " + net.getVersion().toString()); - List deletedRoleIds = this.findAllByNetStringId(net.getStringId()).stream().filter(processRole -> processRole.getProcessId() != null).map(ProcessRole::get_id).collect(Collectors.toList()); + List deletedRoleIds = this.findAllByNetStringId(net.getStringId()).stream().filter(processRole -> !processRole.isGlobal()).map(ProcessRole::get_id).collect(Collectors.toList()); Set deletedRoleStringIds = deletedRoleIds.stream().map(ProcessResourceId::toString).collect(Collectors.toSet()); Pageable realmPageable = PageRequest.of(0, paginationProperties.getBackendPageSize()); 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 9820e6296b..05a329af96 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 @@ -56,6 +56,8 @@ public class UserServiceImpl implements UserService { private AbstractUser systemUser; + private RealmService realmService; + @Getter private PaginationProperties paginationProperties; @@ -112,6 +114,11 @@ public void setPaginationProperties(PaginationProperties paginationProperties) { this.paginationProperties = paginationProperties; } + @Autowired + public void setRealmService(RealmService realmService) { + this.realmService = realmService; + } + @Override public AbstractUser saveUser(AbstractUser user, String realmId) { user.setRealmId(realmId); @@ -542,15 +549,22 @@ public void removeRoleOfDeletedPetriNet(PetriNet petriNet) { @Override public void removeRoleOfDeletedPetriNet(Set petriNetRoles) { - String defaultRealmCollection = collectionNameProvider.getDefaultRealmCollection(); Pageable pageable = PageRequest.of(0, paginationProperties.getBackendPageSize()); - Collection roleIds = petriNetRoles.stream().map(ProcessRole::get_id).collect(Collectors.toSet()); - Page users; + Set nonGlobalPetriNetRoles = petriNetRoles.stream().filter(r -> !r.isGlobal()).collect(Collectors.toSet()); + Collection roleIds = nonGlobalPetriNetRoles.stream().map(ProcessRole::get_id).collect(Collectors.toSet()); + Pageable realmPageable = PageRequest.of(0, paginationProperties.getBackendPageSize()); + Page realms; do { - users = searchUsersByRoleIds(roleIds, defaultRealmCollection, pageable); - users.getContent().forEach(u -> removeRoles(u, petriNetRoles)); - pageable = pageable.next(); - } while (users.hasNext()); + realms = realmService.getSmallRealm(realmPageable); + Page users; + for (Realm realm : realms.getContent()) { + do { + users = searchUsersByRoleIds(roleIds, collectionNameProvider.getCollectionNameForRealm(realm.getName()), pageable); + users.getContent().forEach(u -> removeRoles(u, nonGlobalPetriNetRoles)); + pageable = pageable.next(); + } while (users.hasNext()); + } + } while (realms.hasNext()); } @Override