diff --git a/pom.xml b/pom.xml index 534bb6d..af9b8b4 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ user-registration-hook war user-registration-hook Hook - 2.0.0 + 2.0.1 scm:git:https://code-repo.d4science.org/gCubeSystem/user-registration-hook.git scm:git:https://code-repo.d4science.org/gCubeSystem/user-registration-hook.git diff --git a/src/main/java/org/gcube/portal/removeaccount/thread/RemovedUserAccountThread.java b/src/main/java/org/gcube/portal/removeaccount/thread/RemovedUserAccountThread.java index ca4d368..e76375f 100644 --- a/src/main/java/org/gcube/portal/removeaccount/thread/RemovedUserAccountThread.java +++ b/src/main/java/org/gcube/portal/removeaccount/thread/RemovedUserAccountThread.java @@ -2,7 +2,7 @@ package org.gcube.portal.removeaccount.thread; import java.util.List; -import org.gcube.portal.usersaccount.Constants; +import org.gcube.vomanagement.usermanagement.model.GatewayRolesNames; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,7 +34,7 @@ public class RemovedUserAccountThread implements Runnable { @Override public void run() { try { - _log.info("Trying to remove user " + userNameToDelete + " from JCR first, using storageHub with role: "+Constants.AUTORISED_INFRA_ROLE); + _log.info("Trying to remove user " + userNameToDelete + " from JCR first, using storageHub with role: "+GatewayRolesNames.INFRASTRUCTURE_MANAGER.getRoleName()); RemoveUserFromJCR rmJCR = new RemoveUserFromJCR(userNameToDelete, theAdminToken, theAdminRolesString); boolean result = rmJCR.remove(); _log.info("The user " + userNameToDelete + " has been removed from JCR with success? " + result); diff --git a/src/main/java/org/gcube/portal/usersaccount/Constants.java b/src/main/java/org/gcube/portal/usersaccount/Constants.java deleted file mode 100644 index e0aba43..0000000 --- a/src/main/java/org/gcube/portal/usersaccount/Constants.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.gcube.portal.usersaccount; - -public class Constants { - public static final String AUTORISED_INFRA_ROLE = "Infrastructure-Manager"; -} diff --git a/src/main/java/org/gcube/portal/usersaccount/MyCreateUserAccountListener.java b/src/main/java/org/gcube/portal/usersaccount/MyCreateUserAccountListener.java index c885e91..43c2c4d 100644 --- a/src/main/java/org/gcube/portal/usersaccount/MyCreateUserAccountListener.java +++ b/src/main/java/org/gcube/portal/usersaccount/MyCreateUserAccountListener.java @@ -14,6 +14,8 @@ import org.gcube.vomanagement.usermanagement.UserManager; import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager; import org.gcube.vomanagement.usermanagement.impl.LiferayRoleManager; import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager; +import org.gcube.vomanagement.usermanagement.model.GCubeRole; +import org.gcube.vomanagement.usermanagement.model.GatewayRolesNames; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,16 +59,23 @@ public class MyCreateUserAccountListener extends BaseModelListener { String username2Delete = user.getScreenName(); _log.info("Trying to remove user from JCR and not notify infra-managers ..."); try { - _log.debug("Getting super user with role {}", Constants.AUTORISED_INFRA_ROLE); + _log.debug("Getting super user with role {}", GatewayRolesNames.INFRASTRUCTURE_MANAGER.getRoleName()); //get the super user String infraContext = "/"+PortalContext.getConfiguration().getInfrastructureName(); - - String adminUsername = "lucio.lelii"; + long rootgroupId = gm.getGroupIdFromInfrastructureScope(infraContext); + User theAdmin = LiferayUserManager.getRandomUserWithRole(rootgroupId, GatewayRolesNames.INFRASTRUCTURE_MANAGER); + if (theAdmin == null) { + System.out.println("Cannot add the user as VRE Folder admin: there is no user having role {} on context: " + GatewayRolesNames.INFRASTRUCTURE_MANAGER.getRoleName()); + } + String adminUsername = theAdmin.getScreenName(); _log.info("Got the super user: {}",adminUsername); String theAdminToken = PortalContext.getConfiguration().getCurrentUserToken(infraContext, adminUsername); List rolesString = new ArrayList(); - rolesString.add("Infrastructure-Manager"); - _log.info("authorizationService().setTokenRoles done"); + List theAdminRoles = rm.listRolesByUserAndGroup(theAdmin.getUserId(), rootgroupId); + for (GCubeRole gCubeRole : theAdminRoles) { + rolesString.add(gCubeRole.getRoleName()); + } + rolesString.add(GatewayRolesNames.INFRASTRUCTURE_MANAGER.getRoleName()); Thread dropUserWorkspaceThread = new Thread(new RemovedUserAccountThread(username2Delete, theAdminToken, rolesString)); dropUserWorkspaceThread.start();