From 868eadfdaa31bab8724e6c8b75fdefc691ccd898 Mon Sep 17 00:00:00 2001 From: lucio Date: Thu, 5 Mar 2020 15:39:34 +0100 Subject: [PATCH] complete remove of file on user and group deletion --- .../storagehub/handlers/TrashHandler.java | 2 +- .../storagehub/services/GroupManager.java | 7 ++++++- .../storagehub/services/UserManager.java | 18 ++++++++++++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/TrashHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/TrashHandler.java index 8144522..576f736 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/TrashHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/TrashHandler.java @@ -78,7 +78,7 @@ public class TrashHandler { log.debug("content ids to remove are {}",contentIdsToDelete); - String user = AuthorizationProvider.instance.get().getClient().getId(); + //String user = AuthorizationProvider.instance.get().getClient().getId(); Runnable deleteFromStorageRunnable = AuthorizedTasks.bind(new Runnable() { @Override diff --git a/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java b/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java index e533763..4ddd154 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java @@ -49,6 +49,7 @@ import org.gcube.common.storagehub.model.exceptions.InvalidCallParameters; import org.gcube.common.storagehub.model.exceptions.InvalidItemException; import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.exceptions.UserNotAuthorizedException; +import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.types.NodeProperty; import org.gcube.common.storagehub.model.types.PrimaryNodeType; import org.gcube.data.access.storagehub.AuthorizationChecker; @@ -57,9 +58,9 @@ import org.gcube.data.access.storagehub.Utils; import org.gcube.data.access.storagehub.exception.MyAuthException; import org.gcube.data.access.storagehub.handlers.CredentialHandler; import org.gcube.data.access.storagehub.handlers.Node2ItemConverter; +import org.gcube.data.access.storagehub.handlers.TrashHandler; import org.gcube.data.access.storagehub.handlers.VRE; import org.gcube.data.access.storagehub.handlers.VREManager; -import org.gcube.smartgears.context.application.ApplicationContext; import org.gcube.smartgears.utils.InnerMethodName; import org.glassfish.jersey.media.multipart.FormDataParam; import org.slf4j.Logger; @@ -70,6 +71,8 @@ public class GroupManager { @Context ServletContext context; + @Inject + TrashHandler trashHandler; private static final String VREMANAGER_ROLE = "VRE-Manager"; private static final String INFRASTRUCTURE_MANAGER_ROLE = "Infrastructure-Manager"; @@ -187,6 +190,8 @@ public class GroupManager { try { Node node = getVreFolderNode(session, group); + List workspaceItems = Utils.getItemList(node, Excludes.GET_ONLY_CONTENT, null, true, null); + trashHandler.removeNodes(session, workspaceItems); node.removeSharedSet(); }catch (Exception e) { log.warn("vreFolder {} not found, removing only the group", group); diff --git a/src/main/java/org/gcube/data/access/storagehub/services/UserManager.java b/src/main/java/org/gcube/data/access/storagehub/services/UserManager.java index c250505..32902b0 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/UserManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/UserManager.java @@ -31,16 +31,17 @@ import org.apache.jackrabbit.api.security.user.QueryBuilder; import org.apache.jackrabbit.api.security.user.User; import org.apache.jackrabbit.core.security.principal.PrincipalImpl; import org.gcube.common.authorization.control.annotations.AuthorizationControl; -import org.gcube.common.authorization.library.provider.AuthorizationProvider; import org.gcube.common.gxrest.response.outbound.GXOutboundErrorResponse; +import org.gcube.common.storagehub.model.Excludes; import org.gcube.common.storagehub.model.exceptions.BackendGenericError; import org.gcube.common.storagehub.model.exceptions.StorageHubException; -import org.gcube.common.storagehub.model.exceptions.UserNotAuthorizedException; +import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.types.NodeProperty; import org.gcube.data.access.storagehub.Constants; import org.gcube.data.access.storagehub.Utils; import org.gcube.data.access.storagehub.exception.MyAuthException; import org.gcube.data.access.storagehub.handlers.CredentialHandler; +import org.gcube.data.access.storagehub.handlers.TrashHandler; import org.gcube.data.access.storagehub.handlers.UnshareHandler; import org.gcube.smartgears.utils.InnerMethodName; import org.slf4j.Logger; @@ -60,7 +61,10 @@ public class UserManager { @Inject UnshareHandler unshareHandler; - + + @Inject + TrashHandler trashHandler; + @GET @Path("") @Produces(MediaType.APPLICATION_JSON) @@ -182,8 +186,14 @@ public class UserManager { } else log.warn("the user {} was already deleted", user); org.gcube.common.storagehub.model.Path homePath = Utils.getHome(user); + org.gcube.common.storagehub.model.Path workspacePath = Utils.getWorkspacePath(user); + try { - session.getNode(homePath.toPath()).remove(); + Node workspaceNode = session.getNode(workspacePath.toPath()); + Node homeNode = session.getNode(homePath.toPath()); + List workspaceItems = Utils.getItemList(workspaceNode, Excludes.GET_ONLY_CONTENT, null, true, null); + trashHandler.removeNodes(session, workspaceItems); + homeNode.remove(); } catch (PathNotFoundException e) { log.warn("{} home dir was already deleted", user); }