From 04ab828143b6ebdd1b67081d30ba0f24bbf567e5 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Wed, 21 Apr 2021 18:09:41 +0200 Subject: [PATCH] fix bug avoiding the download of files --- .classpath | 22 +++++----- .settings/org.eclipse.wst.common.component | 43 ++++++++++++++----- CHANGELOG.md | 2 +- pom.xml | 2 +- .../user/wswidget/WorkspaceWidget.java | 19 +++++++- 5 files changed, 64 insertions(+), 24 deletions(-) diff --git a/.classpath b/.classpath index 2998aa3..b5a68b0 100644 --- a/.classpath +++ b/.classpath @@ -1,5 +1,16 @@ + + + + + + + + + + + @@ -13,16 +24,5 @@ - - - - - - - - - - - diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 39e308c..5247f67 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,28 +1,51 @@ - + + + + - + + + + - + + + + - + + + - - - + + + + + + - + + + + - + + + + - + + + + diff --git a/CHANGELOG.md b/CHANGELOG.md index 02db75a..1f0e243 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [v1.5.0] - 2021-04-06 +## [v1.5.0-SNAPSHOT] - 2021-04-06 Removed legacy auth dependency diff --git a/pom.xml b/pom.xml index 36e8ecb..03b9a89 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ workspace-widget-portlet war workspace-widget-portlet Portlet - 1.5.0 + 1.5.0-SNAPSHOT Workspace Widget Portlet is a small Front-end component looking like G Drive which exposes the content of the user's workspace or VRE Folders in read only mode. diff --git a/src/main/java/org/gcube/portlets/user/wswidget/WorkspaceWidget.java b/src/main/java/org/gcube/portlets/user/wswidget/WorkspaceWidget.java index 17fc2d5..9cf8a1d 100644 --- a/src/main/java/org/gcube/portlets/user/wswidget/WorkspaceWidget.java +++ b/src/main/java/org/gcube/portlets/user/wswidget/WorkspaceWidget.java @@ -12,6 +12,8 @@ import javax.portlet.ResourceResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.gcube.common.authorization.library.provider.UmaJWTProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.storagehub.client.StreamDescriptor; import org.gcube.common.storagehub.client.dsl.FileContainer; import org.gcube.common.storagehub.client.dsl.ItemContainer; @@ -22,11 +24,15 @@ import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.items.ExternalLink; import org.gcube.common.storagehub.model.items.ExternalURL; import org.gcube.common.storagehub.model.items.Item; +import org.gcube.oidc.rest.JWTToken; +import org.gcube.portal.oidc.lr62.OIDCUmaUtil; import org.gcube.portlets.user.wswidget.shared.AuthorizedUser; import org.gcube.portlets.user.wswidget.shared.Breadcrumb; import org.gcube.portlets.user.wswidget.shared.WSItem; import org.gcube.vomanagement.usermanagement.model.GCubeUser; +import com.liferay.portal.kernel.exception.PortalException; +import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.json.JSONArray; import com.liferay.portal.kernel.json.JSONFactoryUtil; import com.liferay.portal.kernel.json.JSONObject; @@ -57,6 +63,17 @@ public class WorkspaceWidget extends MVCPortlet { //check if is a file download if (fileToDownloadId != null) { setAuthorizationToken(resourceRequest); + String currentContext = Utils.getCurrentContext(resourceRequest); + ScopeProvider.instance.set(currentContext); + HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(resourceRequest); + long userId; + try { + userId = PortalUtil.getUser(resourceRequest).getUserId(); + JWTToken umaToken = OIDCUmaUtil.getUMAToken(httpReq, userId, currentContext); + UmaJWTProvider.instance.set(umaToken.getRaw()); + } catch (Exception e1) { + e1.printStackTrace(); + } String selectedItemId = fileToDownloadId.split("=")[1]; StorageHubClient client = new StorageHubClient(); FileContainer fileContainer = null; @@ -87,7 +104,7 @@ public class WorkspaceWidget extends MVCPortlet { } if (! (item instanceof ExternalURL || item instanceof ExternalLink)) { - HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(resourceRequest); + ServletResponseUtil.sendFile(httpReq,httpRes, streamDescr.getFileName(), streamDescr.getStream(), "application/download"); streamDescr.getStream().close(); }