Skip to content
Snippets Groups Projects
Commit 94f8719d authored by pkupczyk's avatar pkupczyk
Browse files

SSDM-6019 : Project Authorization - modify @RolesAllowed annotations at...

SSDM-6019 : Project Authorization - modify @RolesAllowed annotations at non-entity related methods - bugfixing

SVN: 39079
parent 6389b2ff
No related branches found
No related tags found
No related merge requests found
...@@ -26,6 +26,9 @@ import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.AbstractT ...@@ -26,6 +26,9 @@ import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.AbstractT
*/ */
abstract class AbstractProjectPredicate<T> extends AbstractPredicate<T> abstract class AbstractProjectPredicate<T> extends AbstractPredicate<T>
{ {
protected IAuthorizationDataProvider provider;
protected final SpaceIdentifierPredicate spacePredicate; protected final SpaceIdentifierPredicate spacePredicate;
protected final ProjectTechIdPredicate projectTechIdPredicate; protected final ProjectTechIdPredicate projectTechIdPredicate;
...@@ -45,6 +48,7 @@ abstract class AbstractProjectPredicate<T> extends AbstractPredicate<T> ...@@ -45,6 +48,7 @@ abstract class AbstractProjectPredicate<T> extends AbstractPredicate<T>
@Override @Override
public final void init(IAuthorizationDataProvider provider) public final void init(IAuthorizationDataProvider provider)
{ {
this.provider = provider;
spacePredicate.init(provider); spacePredicate.init(provider);
projectTechIdPredicate.init(provider); projectTechIdPredicate.init(provider);
projectPermIdPredicate.init(provider); projectPermIdPredicate.init(provider);
......
...@@ -22,7 +22,9 @@ import ch.systemsx.cisd.common.exceptions.Status; ...@@ -22,7 +22,9 @@ import ch.systemsx.cisd.common.exceptions.Status;
import ch.systemsx.cisd.openbis.generic.server.authorization.RoleWithIdentifier; import ch.systemsx.cisd.openbis.generic.server.authorization.RoleWithIdentifier;
import ch.systemsx.cisd.openbis.generic.shared.dto.PermId; import ch.systemsx.cisd.openbis.generic.shared.dto.PermId;
import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectUpdatesDTO;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifierFactory;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
/** /**
...@@ -66,13 +68,38 @@ public class ProjectUpdatesPredicate extends AbstractProjectPredicate<ProjectUpd ...@@ -66,13 +68,38 @@ public class ProjectUpdatesPredicate extends AbstractProjectPredicate<ProjectUpd
{ {
return status; return status;
} }
String newSpaceCode = updates.getSpaceCode();
if (newSpaceCode != null) ProjectPE project = tryGetProject(updates);
if (project != null)
{ {
SpaceIdentifier newSpaceIdentifier = String oldSpaceCode = project.getSpace().getCode();
new SpaceIdentifier(newSpaceCode); String newSpaceCode = updates.getSpaceCode();
status = spacePredicate.doEvaluation(person, allowedRoles, newSpaceIdentifier);
if (newSpaceCode != null && false == newSpaceCode.equals(oldSpaceCode))
{
status = spacePredicate.doEvaluation(person, allowedRoles, new SpaceIdentifier(newSpaceCode));
}
} }
return status; return status;
} }
private ProjectPE tryGetProject(ProjectUpdatesDTO updates)
{
if (updates.getTechId() != null)
{
return provider.tryGetProjectByTechId(updates.getTechId());
} else if (updates.getPermId() != null)
{
return provider.tryGetProjectByPermId(new PermId(updates.getPermId()));
} else if (updates.getIdentifier() != null)
{
return provider.tryGetProjectByIdentifier(ProjectIdentifierFactory.parse(updates.getIdentifier()));
} else
{
return null;
}
}
} }
...@@ -21,6 +21,7 @@ import java.util.HashMap; ...@@ -21,6 +21,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory;
...@@ -238,7 +239,10 @@ public class EntityHistoryTranslator ...@@ -238,7 +239,10 @@ public class EntityHistoryTranslator
if (relatedPE != null) if (relatedPE != null)
{ {
history.setRelatedEntity(DataSetTranslator.translateBasicProperties(relatedPE)); AbstractExternalData data = DataSetTranslator.translateBasicProperties(relatedPE);
data.setExperiment(ExperimentTranslator.translate(relatedPE.getExperiment(), baseIndexURL, null, managedPropertyEvaluatorFactory));
data.setSample(SampleTranslator.translate(relatedPE.tryGetSample(), baseIndexURL, null, managedPropertyEvaluatorFactory));
history.setRelatedEntity(data);
} }
if (historyPE.getRelationType() != null) if (historyPE.getRelationType() != null)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment