From 2e4f8795076682eb27e855169f30d1370a5e7cc4 Mon Sep 17 00:00:00 2001 From: pkupczyk <piotr.kupczyk@id.ethz.ch> Date: Tue, 13 Oct 2020 14:43:57 +0200 Subject: [PATCH] SSDM-10270 : add option to re-activate users from UI - update UserManager - prior version of PersonUpdate had active flag set to true by default which was triggering person activation on every person update; now after the change of PersonUpdate the activation/deactivation is done only if explicitly requested; due to this change UserManager had to be updated to explicitly activate users when needed. --- .../generic/server/task/UserManager.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java index cb30530e07a..f90e039d6cb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java @@ -63,6 +63,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.id.IPersonId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.id.PersonPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.search.PersonSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.update.PersonUpdate; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.update.UpdatePersonsOperation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.create.CreateProjectsOperation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.create.ProjectCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.fetchoptions.ProjectFetchOptions; @@ -623,6 +624,11 @@ public class UserManager context.getReport().addUser(userId); } else if (knownUser != null && knownUser.isActive() == false) { + PersonUpdate personUpdate = new PersonUpdate(); + personUpdate.setUserId(personId); + personUpdate.activate(); + context.add(personUpdate); + context.getReport().reuseUser(userId); } getHomeSpaceRequest(userId).setHomeSpace(userSpaceId); @@ -1003,6 +1009,8 @@ public class UserManager private Map<String, PersonCreation> personCreations = new LinkedMap<>(); + private Map<IPersonId, PersonUpdate> personUpdates = new LinkedMap<>(); + private List<SpaceCreation> spaceCreations = new ArrayList<>(); private List<ProjectCreation> projectCreations = new ArrayList<>(); @@ -1053,6 +1061,11 @@ public class UserManager personCreations.put(personCreation.getUserId(), personCreation); } + public void add(PersonUpdate personUpdate) + { + personUpdates.put(personUpdate.getUserId(), personUpdate); + } + public void add(SpaceCreation spaceCreation) { spaceCreations.add(spaceCreation); @@ -1100,6 +1113,10 @@ public class UserManager { operations.add(new CreatePersonsOperation(new ArrayList<>(personCreations.values()))); } + if (personUpdates.isEmpty() == false) + { + operations.add(new UpdatePersonsOperation(new ArrayList<>(personUpdates.values()))); + } if (spaceCreations.isEmpty() == false) { operations.add(new CreateSpacesOperation(spaceCreations)); -- GitLab