diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/CreateDataSetExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/CreateDataSetExecutor.java index 5b40feb2f01c08893805371e665fd7e70712ef52..e50582d63a15a493add46bab56afddcdfac941d3 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/CreateDataSetExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/CreateDataSetExecutor.java @@ -238,7 +238,6 @@ public class CreateDataSetExecutor extends AbstractCreateEntityExecutor<DataSetC @Override protected void checkAccess(IOperationContext context) { - authorizationExecutor.canCreate(context); } @Override diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/DataSetAuthorizationExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/DataSetAuthorizationExecutor.java index 919d375111e63a58c921f58c3781dd70e9ffd054..05c8b8416e915fdfab56ff3c5d8df9de746b4268 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/DataSetAuthorizationExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/DataSetAuthorizationExecutor.java @@ -44,11 +44,22 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; public class DataSetAuthorizationExecutor implements IDataSetAuthorizationExecutor { + private boolean canCreate(PersonPE person) + { + if (person.isSystemUser()) + { + return true; + } + + AuthorizationServiceUtils authorization = new AuthorizationServiceUtils(null, person); + return authorization.doesUserHaveRole(RoleWithHierarchy.SPACE_ETL_SERVER); + } + @Override @RolesAllowed({ RoleWithHierarchy.SPACE_USER, RoleWithHierarchy.SPACE_ETL_SERVER }) @Capability("CREATE_DATASET") @DatabaseCreateOrDeleteModification(value = ObjectKind.DATA_SET) - public void canCreate(IOperationContext context) + public void canCreate(IOperationContext context, @AuthorizationGuard(guardClass = DataPEPredicate.class) DataPE dataSet) { boolean isCreatorPersonAllowed = false; boolean isPersonAllowed = false; @@ -69,25 +80,7 @@ public class DataSetAuthorizationExecutor implements IDataSetAuthorizationExecut "Data set creation can be only executed by a system user or a user with at least " + RoleWithHierarchy.SPACE_ETL_SERVER + " role."); } - } - - private boolean canCreate(PersonPE person) - { - if (person.isSystemUser()) - { - return true; - } - - AuthorizationServiceUtils authorization = new AuthorizationServiceUtils(null, person); - return authorization.doesUserHaveRole(RoleWithHierarchy.SPACE_ETL_SERVER); - } - - @Override - @RolesAllowed({ RoleWithHierarchy.SPACE_USER, RoleWithHierarchy.SPACE_ETL_SERVER }) - @Capability("CREATE_DATASET") - @DatabaseCreateOrDeleteModification(value = ObjectKind.DATA_SET) - public void canCreate(IOperationContext context, @AuthorizationGuard(guardClass = DataPEPredicate.class) DataPE dataSet) - { + if (false == new DataSetPEByExperimentOrSampleIdentifierValidator().doValidation(dataSet.getRegistrator(), dataSet)) { throw new UnauthorizedObjectAccessException(new DataSetPermId(dataSet.getPermId())); diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/IDataSetAuthorizationExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/IDataSetAuthorizationExecutor.java index d40375fc74aa2d0e88c36e990338a80521706b61..87cb0bebc3f9b51dda7c40cb2a6b2920ee04aa75 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/IDataSetAuthorizationExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/IDataSetAuthorizationExecutor.java @@ -27,8 +27,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; public interface IDataSetAuthorizationExecutor extends IObjectAuthorizationExecutor { - void canCreate(IOperationContext context); - void canCreate(IOperationContext context, DataPE dataSet); void canUpdate(IOperationContext context, IDataSetId id, DataPE dataSet);