From d8edcb1b7b8dd04ee671cc2466e2ab39ca6cc674 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Mon, 3 Feb 2020 16:22:43 +0100 Subject: [PATCH] Create Workspase is still performed via HomeLibrary --- pom.xml | 15 +++++ .../MyCreateUserAccountListener.java | 46 +++++---------- .../WorkspaceCreateAccountThread.java | 57 ++++--------------- 3 files changed, 38 insertions(+), 80 deletions(-) diff --git a/pom.xml b/pom.xml index e7cc039..534bb6d 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,21 @@ + + org.gcube.common + home-library + provided + + + org.gcube.common + home-library-jcr + provided + + + org.gcube.common + home-library-model + provided + org.gcube.core common-encryption diff --git a/src/main/java/org/gcube/portal/usersaccount/MyCreateUserAccountListener.java b/src/main/java/org/gcube/portal/usersaccount/MyCreateUserAccountListener.java index ba92074..c885e91 100644 --- a/src/main/java/org/gcube/portal/usersaccount/MyCreateUserAccountListener.java +++ b/src/main/java/org/gcube/portal/usersaccount/MyCreateUserAccountListener.java @@ -1,13 +1,9 @@ package org.gcube.portal.usersaccount; -import static org.gcube.common.authorization.client.Constants.authorizationService; - import java.util.ArrayList; import java.util.List; -import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.portal.PortalContext; -import org.gcube.common.storagehub.client.dsl.StorageHubClient; import org.gcube.portal.notifications.thread.NewUserAccountNotificationThread; import org.gcube.portal.removeaccount.thread.RemoveUserTokenFromInfraThread; import org.gcube.portal.removeaccount.thread.RemovedUserAccountThread; @@ -18,8 +14,6 @@ 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.GCubeUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,11 +40,11 @@ public class MyCreateUserAccountListener extends BaseModelListener { @Override public void onAfterCreate(User user) throws ModelListenerException { _log.info("onAfterCreate NewUserAccount listener for: " + user.getScreenName() + " / " + user.getFullName()); - Thread emailManagersThread = new Thread(new NewUserAccountNotificationThread(user.getScreenName(), user.getFullName(), user.getEmailAddress())); - emailManagersThread.start(); - Thread WorkspaceAccountCreationThread = new Thread(new WorkspaceCreateAccountThread(user.getScreenName(), user.getFullName(), user.getEmailAddress())); WorkspaceAccountCreationThread.start(); + + Thread emailManagersThread = new Thread(new NewUserAccountNotificationThread(user.getScreenName(), user.getFullName(), user.getEmailAddress())); + emailManagersThread.start(); } @Override @@ -66,30 +60,16 @@ public class MyCreateUserAccountListener extends BaseModelListener { _log.debug("Getting super user with role {}", Constants.AUTORISED_INFRA_ROLE); //get the super user String infraContext = "/"+PortalContext.getConfiguration().getInfrastructureName(); -// long rootgroupId = gm.getGroupIdFromInfrastructureScope(infraContext); -// RoleManager rm = new LiferayRoleManager(); -// long roleId = rm.getRoleId(HookConstants.AUTORISED_INFRA_ROLE, rootgroupId); -// List users = uMan.listUsersByGroupAndRole(rootgroupId, roleId); -// if (users.isEmpty()) { -// _log.error("Cannot add the user as VRE Folder admin: there is no user having role {} on context: {}", HookConstants.AUTORISED_INFRA_ROLE, infraContext); -// return false; -// } -// else { - //GCubeUser theAdmin = users.get(0); - String adminUsername = "lucio.lelii"; - _log.info("Got the super user: {}",adminUsername); - String theAdminToken = PortalContext.getConfiguration().getCurrentUserToken(infraContext, adminUsername); - List rolesString = new ArrayList(); -// List theAdminRoles = rm.listRolesByUserAndGroup(theAdmin.getUserId(), rootgroupId); -// for (GCubeRole gCubeRole : theAdminRoles) { -// rolesString.add(gCubeRole.getRoleName()); -// } - rolesString.add("Infrastructure-Manager"); - _log.info("authorizationService().setTokenRoles(theAdminToken, rolesString);",theAdminToken); - Thread dropUserWorkspaceThread = new Thread(new RemovedUserAccountThread(username2Delete, theAdminToken, rolesString)); - dropUserWorkspaceThread.start(); -// } - + + String adminUsername = "lucio.lelii"; + _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"); + Thread dropUserWorkspaceThread = new Thread(new RemovedUserAccountThread(username2Delete, theAdminToken, rolesString)); + dropUserWorkspaceThread.start(); + _log.info("Trying to remove user from LDAP ..."); Thread removeFromLDAPThread = new Thread(new RemovedUserFromLDAPThread(username2Delete)); removeFromLDAPThread.start(); diff --git a/src/main/java/org/gcube/portal/usersaccount/WorkspaceCreateAccountThread.java b/src/main/java/org/gcube/portal/usersaccount/WorkspaceCreateAccountThread.java index 3689511..296acfb 100644 --- a/src/main/java/org/gcube/portal/usersaccount/WorkspaceCreateAccountThread.java +++ b/src/main/java/org/gcube/portal/usersaccount/WorkspaceCreateAccountThread.java @@ -1,77 +1,40 @@ package org.gcube.portal.usersaccount; -import java.util.ArrayList; -import java.util.List; - import org.gcube.common.authorization.library.provider.SecurityTokenProvider; -import static org.gcube.common.authorization.client.Constants.authorizationService; +import org.gcube.common.homelibrary.home.HomeLibrary; +import org.gcube.common.homelibrary.home.workspace.Workspace; import org.gcube.common.portal.PortalContext; import org.gcube.common.scope.api.ScopeProvider; -import org.gcube.common.storagehub.client.dsl.StorageHubClient; -import org.gcube.vomanagement.usermanagement.RoleManager; -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.GCubeUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class WorkspaceCreateAccountThread implements Runnable { private static Logger _log = LoggerFactory.getLogger(WorkspaceCreateAccountThread.class); - public static final String AUTORISED_INFRA_ROLE = "Infrastructure-Manager"; + private String newUserUserName; public WorkspaceCreateAccountThread(String newUserUserName, String newUserFullName, String newUserEmailAddress) { super(); this.newUserUserName = newUserUserName; - _log.info("Calling StorageHub for Workspace creation to new user: " + newUserUserName + " ("+newUserFullName+")"); + _log.info("Calling HomeLibrary for Workspace creation to new user: " + newUserUserName + " ("+newUserFullName+")"); } @Override public void run() { getWS(newUserUserName, "/"+PortalContext.getConfiguration().getInfrastructureName()); } - public static void getWS(String currentUsername, String context) { + public static Workspace getWS(String currentUsername, String context) { String username = currentUsername; String authorizationToken = PortalContext.getConfiguration().getCurrentUserToken(context, username); SecurityTokenProvider.instance.set(authorizationToken); ScopeProvider.instance.set(context); - String previousToken = authorizationToken; - try { - //get the super user - String infraContext = "/"+PortalContext.getConfiguration().getInfrastructureName(); -// long rootgroupId = gm.getGroupIdFromInfrastructureScope(infraContext); -// RoleManager rm = new LiferayRoleManager(); -// long roleId = rm.getRoleId(HookConstants.AUTORISED_INFRA_ROLE, rootgroupId); -// List users = uMan.listUsersByGroupAndRole(rootgroupId, roleId); -// if (users.isEmpty()) { -// _log.error("Cannot add the user as VRE Folder admin: there is no user having role {} on context: {}", HookConstants.AUTORISED_INFRA_ROLE, infraContext); -// return false; -// } -// else { - //GCubeUser theAdmin = users.get(0); - String adminUsername = "lucio.lelii"; - _log.info("Got the super user: {}",adminUsername); - String theAdminToken = PortalContext.getConfiguration().getCurrentUserToken(infraContext, adminUsername); - List rolesString = new ArrayList(); -// List theAdminRoles = rm.listRolesByUserAndGroup(theAdmin.getUserId(), rootgroupId); -// for (GCubeRole gCubeRole : theAdminRoles) { -// rolesString.add(gCubeRole.getRoleName()); -// } - rolesString.add("Infrastructure-Manager"); - _log.info("authorizationService().setTokenRoles(theAdminToken, rolesString);",theAdminToken); - authorizationService().setTokenRoles(theAdminToken, rolesString); - SecurityTokenProvider.instance.set(theAdminToken); - StorageHubClient shc = new StorageHubClient(); - shc.createUserAccount(currentUsername); - SecurityTokenProvider.instance.set(previousToken); -// } + try { + Workspace toReturn = HomeLibrary.getUserWorkspace(username); + _log.info("Done Workspace creation for user: " + currentUsername); + return toReturn; } catch (Exception e) { e.printStackTrace(); - SecurityTokenProvider.instance.set(previousToken); - return; + return null; } } }