diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagementMaintenanceTask.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagementMaintenanceTask.java index 5f803c8535076b8f54349a45d0156f067fa28e3b..1d88eb5337335a626f2390c5ab9be78c46ee6fff 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagementMaintenanceTask.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagementMaintenanceTask.java @@ -267,6 +267,7 @@ public class UserManagementMaintenanceTask extends AbstractGroupMaintenanceTask private UserManager createUserManager(UserManagerConfig config, Log4jSimpleLogger logger, UserManagerReport report) { UserManager userManager = createUserManager(logger, report); + userManager.setReuseHomeSpace(config.getReuseHomeSpace()); userManager.setGlobalSpaces(config.getGlobalSpaces()); userManager.setInstanceAdmins(config.getInstanceAdmins()); try diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java index f99ebb49d70ad1f1ecff754de36cc720bd9042fd..9b7ee1a8a886d5af5a7de832ab94d0fa28c5e309 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java @@ -146,6 +146,8 @@ public class UserManager private boolean deactivateUnknownUsers; + private boolean reuseHomeSpace; + public UserManager(IAuthenticationService authenticationService, IApplicationServerInternalApi service, File shareIdsMappingFileOrNull, ISimpleLogger logger, UserManagerReport report) { @@ -1023,10 +1025,13 @@ public class UserManager private SpacePermId createUserSpace(Context context, String groupCode, String userId) { String userSpaceCode = createCommonSpaceCode(groupCode, userId.toUpperCase()); - int n = context.getCurrentState().getNumberOfSpacesStartingWith(userSpaceCode); - if (n > 0) + if(!reuseHomeSpace) { - userSpaceCode += "_" + (n + 1); + int n = context.getCurrentState().getNumberOfSpacesStartingWith(userSpaceCode); + if (n > 0) + { + userSpaceCode += "_" + (n + 1); + } } return createSpace(context, userSpaceCode); } @@ -1128,6 +1133,11 @@ public class UserManager context.getReport().assignRoleTo(groupId, role, spaceId); } + public void setReuseHomeSpace(boolean reuseHomeSpace) + { + this.reuseHomeSpace = reuseHomeSpace; + } + private static final class CurrentState { private Map<String, AuthorizationGroup> groupsByCode = new TreeMap<>(); diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagerConfig.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagerConfig.java index acfb0d05c2845b9e23d3099a4dbd5990b5dc2d42..fd26889514813c38570f33e9c58c581b7420eb61 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagerConfig.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagerConfig.java @@ -24,6 +24,8 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.Role; class UserManagerConfig { + private Boolean reuseHomeSpace = true; + private List<String> globalSpaces = new ArrayList<>(); private Map<Role, List<String>> commonSpaces = new HashMap<>(); @@ -96,4 +98,13 @@ class UserManagerConfig this.instanceAdmins = instanceAdmins; } + public boolean getReuseHomeSpace() + { + return reuseHomeSpace; + } + + public void setReuseHomeSpace(boolean reuseHomeSpace) + { + this.reuseHomeSpace = reuseHomeSpace; + } } \ No newline at end of file