diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/GuardedMethod.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/GuardedMethod.java index 9e4d7a6..8feb970 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/GuardedMethod.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/GuardedMethod.java @@ -1,6 +1,8 @@ package org.gcube.application.geoportal.service.rest; import lombok.extern.slf4j.Slf4j; +import org.gcube.application.cms.plugins.faults.InsufficientPrivileges; +import org.gcube.application.geoportal.common.model.rest.ConfigurationException; import org.gcube.application.geoportal.service.model.internal.faults.InvalidLockException; import org.gcube.application.geoportal.service.model.internal.faults.ProjectLockedException; import org.gcube.application.geoportal.service.model.internal.faults.ProjectNotFoundException; @@ -26,14 +28,18 @@ public abstract class GuardedMethod { public GuardedMethod execute() throws WebApplicationException{ try { - if(!preoperations.isEmpty()) { + if (!preoperations.isEmpty()) { log.trace("Running preops (size : {} )", preoperations.size()); for (Runnable r : preoperations) r.run(); } log.trace("Executing actual method.."); - result=run(); + result = run(); return this; + }catch (ConfigurationException e){ + throw new WebApplicationException("Environment is not properly configured", e,Status.EXPECTATION_FAILED); + }catch (InsufficientPrivileges e){ + throw new WebApplicationException("User has insufficient privileges for requested action", e,Status.FORBIDDEN); }catch(WebApplicationException e) { log.error("Throwing Web Application Exception ", e); throw e; diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/utils/UserUtils.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/utils/UserUtils.java index 4147324..575ff6d 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/utils/UserUtils.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/utils/UserUtils.java @@ -83,7 +83,7 @@ public class UserUtils { user.setUsername(this.getUser().getId()); user.setRoles(roles); }catch(Exception e){ - log.warn("Unable to determine user id, using FAKE"); + log.warn("Unable to determine user id, using FAKE",e); user.setUsername("FAKE"); user.setRoles(new HashSet<>()); user.getRoles().addAll(DEFAULT_ROLES); diff --git a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/profiledDocuments/ProfiledConcessioniTests.java b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/profiledDocuments/ProfiledConcessioniTests.java index 014d894..8cf6068 100644 --- a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/profiledDocuments/ProfiledConcessioniTests.java +++ b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/profiledDocuments/ProfiledConcessioniTests.java @@ -9,6 +9,7 @@ import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest; import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest; import org.gcube.application.geoportal.common.rest.InterfaceConstants; import org.gcube.application.geoportal.common.utils.StorageUtils; +import org.gcube.application.geoportal.service.utils.UserUtils; import org.junit.Test; import javax.ws.rs.client.WebTarget; @@ -18,6 +19,7 @@ import static org.junit.Assert.assertTrue; public class ProfiledConcessioniTests extends AbstractProfiledDocumentsTests{ + @Override protected WebTarget baseTarget() { @@ -27,6 +29,7 @@ public class ProfiledConcessioniTests extends AbstractProfiledDocumentsTests{ @Test public void testSDI() throws Exception { + UserUtils.DEFAULT_ROLES.add("Data-Manager"); // Create new Document theDoc=Document.parse("{\n" + "\"posizionamentoScavo\" :{\n" +