diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml index 1072670..85fba01 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml @@ -17,11 +17,14 @@ + + - + diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java index 25c0436..1d1ca6c 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewerConstants.java @@ -26,6 +26,7 @@ public class GeoportalDataViewerConstants { //WAITING_SERVER_ACTION_SERVLET public static final String UCD_ID_PARAMETER = "ucdID"; public static final String PROIECT_ID_PARAMETER = "projectID"; + public static final String CONTEXT_ID_PARAMETER = "contextID"; public static final String GEOPORTAL_EXPORT_ACTION_SERVLET = GWT.getModuleBaseURL() + "geoportalexporterservice"; diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectViewer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectViewer.java index 33fd6c7..c7217f9 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectViewer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/cms/project/ProjectViewer.java @@ -7,6 +7,7 @@ import org.gcube.application.geoportalcommon.shared.geoportal.geojson.GeoJSON; import org.gcube.application.geoportalcommon.shared.geoportal.project.RelationshipDV; import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView; import org.gcube.application.geoportalcommon.shared.geoportal.view.SectionView; +import org.gcube.portal.clientcontext.client.GCubeClientContext; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerServiceAsync; @@ -222,12 +223,15 @@ public class ProjectViewer extends Composite { // TODO: handle exception } + String currentContextId = GCubeClientContext.getCurrentContextId(); + StringBuilder builder = new StringBuilder(); builder.append(GeoportalDataViewerConstants.GEOPORTAL_EXPORT_ACTION_SERVLET + "?"); builder.append(GeoportalDataViewerConstants.UCD_ID_PARAMETER + "=" + projectView.getTheProjectDV().getProfileID() + "&"); builder.append(GeoportalDataViewerConstants.PROIECT_ID_PARAMETER + "=" - + projectView.getTheProjectDV().getId()); + + projectView.getTheProjectDV().getId() + "&"); + builder.append(GeoportalDataViewerConstants.CONTEXT_ID_PARAMETER + "=" + currentContextId); String geoportalExportActionServlet = builder.toString(); NewBrowserWindow.open(geoportalExportActionServlet, "_blank", null); diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalExporterActionServlet.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalExporterActionServlet.java index adbcb55..a1705f0 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalExporterActionServlet.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalExporterActionServlet.java @@ -16,10 +16,12 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.apache.http.client.methods.HttpGet; +import org.gcube.common.portal.PortalContext; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants; import org.gcube.portlets.user.geoportaldataviewer.server.mongoservice.GeoportalServiceIdentityProxy; -import org.gcube.portlets.user.geoportaldataviewer.server.util.SessionUtil; import org.gcube.portlets.user.uriresolvermanager.geoportal.GeoportalExporterAPI; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -59,12 +61,19 @@ public class GeoportalExporterActionServlet extends HttpServlet { // setSecretManager(); String projectID = req.getParameter(GeoportalDataViewerConstants.PROIECT_ID_PARAMETER); String ucdID = req.getParameter(GeoportalDataViewerConstants.UCD_ID_PARAMETER); - - logger.info("doGet called with Input Params [projectID: " + projectID + ", ucdID: " + ucdID + "]"); - + String contextID = req.getParameter(GeoportalDataViewerConstants.CONTEXT_ID_PARAMETER); + logger.info("doGet called with [projectID: " + projectID + ", ucdID: " + ucdID + ", contextID: " + contextID + "]"); + + if(contextID==null || contextID.isEmpty()) + sendError(resp, "Bad Request. No context found!"); + + PortalContext pContext = PortalContext.getConfiguration(); + GCubeUser gcubeUser = pContext.getCurrentUser(req); + String scope = pContext.getCurrentScope(contextID); + logger.info("User caller fullname is {}, scope {}", gcubeUser.getFullname(), scope); + try { - String scope = SessionUtil.getCurrentContext(req, true); - logger.info("the scope is: "+scope); + ScopeProvider.instance.set(scope); GeoportalServiceIdentityProxy identity = new GeoportalServiceIdentityProxy(req); String theToken = identity.getToken(); String theIdentity = identity.getIdentity(); diff --git a/src/main/resources/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml b/src/main/resources/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml index 1072670..85fba01 100644 --- a/src/main/resources/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml @@ -17,11 +17,14 @@ + + - +