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