diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleListPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleListPredicate.java index 69f0d8eeee9660077c267b5aa9ce2d71bfccf39c..56e3abf9347cb7ea2e229580860c9e56ab361a04 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleListPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleListPredicate.java @@ -127,8 +127,7 @@ public class SampleListPredicate extends AbstractSpacePredicate<List<Sample>> continue; // Shared samples will return a spaceId of null (or 0 in EoDSQL). } final Status status = - evaluate(person, allowedRoles, authorizationDataProvider - .getHomeDatabaseInstance(), spaceId); + evaluate(person, allowedRoles, spaceId); if (Status.OK.equals(status) == false) { return status; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/AbstractSpacePredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/AbstractSpacePredicate.java index 947924f1cf239f669127856c4b87d6aff6929bc1..ef665d7e1725db6a415628fa266ade09edcdea00 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/AbstractSpacePredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/AbstractSpacePredicate.java @@ -89,18 +89,10 @@ public abstract class AbstractSpacePredicate<T> extends AbstractDatabaseInstance } protected Status evaluate(final PersonPE person, final List<RoleWithIdentifier> allowedRoles, - final DatabaseInstancePE databaseInstance, final long spaceTechId) - { - final String databaseInstanceUUID = databaseInstance.getUuid(); - return evaluate(person, allowedRoles, databaseInstanceUUID, databaseInstance.getCode(), - spaceTechId); - } - - protected Status evaluate(final PersonPE person, final List<RoleWithIdentifier> allowedRoles, - final String databaseInstanceUUID, final String databaseInstanceCode, final long spaceTechId) { - if (tryFindSpace(databaseInstanceUUID, spaceTechId) == null) + final SpacePE space = tryFindSpace(spaceTechId); + if (space == null) { if (okForNonExistentSpaces) { @@ -111,7 +103,8 @@ public abstract class AbstractSpacePredicate<T> extends AbstractDatabaseInstance } } - final boolean matching = isMatching(allowedRoles, databaseInstanceUUID, spaceTechId); + final boolean matching = + isMatching(allowedRoles, space.getDatabaseInstance().getId(), spaceTechId); if (matching) { return Status.OK; @@ -137,11 +130,11 @@ public abstract class AbstractSpacePredicate<T> extends AbstractDatabaseInstance return null; } - private SpacePE tryFindSpace(final String databaseInstanceUUID, final long spaceTechId) + private SpacePE tryFindSpace(final long spaceTechId) { for (final SpacePE space : spaces) { - if (equalIdentifier(space, databaseInstanceUUID, spaceTechId)) + if (equalIdentifier(space, spaceTechId)) { return space; } @@ -172,18 +165,17 @@ public abstract class AbstractSpacePredicate<T> extends AbstractDatabaseInstance } private boolean isMatching(final List<RoleWithIdentifier> allowedRoles, - final String databaseInstanceUUID, final long spaceTechId) + final long databaseTechId, final long spaceTechId) { for (final RoleWithIdentifier role : allowedRoles) { final RoleLevel roleLevel = role.getRoleLevel(); if (roleLevel.equals(RoleLevel.SPACE) - && equalIdentifier(role.getAssignedSpace(), databaseInstanceUUID, - spaceTechId)) + && equalIdentifier(role.getAssignedSpace(), spaceTechId)) { return true; } else if (roleLevel.equals(RoleLevel.INSTANCE) - && role.getAssignedDatabaseInstance().getUuid().equals(databaseInstanceUUID)) + && role.getAssignedDatabaseInstance().getId() == databaseTechId) { // permissions on the database instance level allow to access all spaces in this // instance @@ -200,11 +192,9 @@ public abstract class AbstractSpacePredicate<T> extends AbstractDatabaseInstance && space.getDatabaseInstance().getUuid().equals(databaseInstanceUUID); } - private boolean equalIdentifier(final SpacePE space, final String databaseInstanceUUID, - final long spaceTechId) + private boolean equalIdentifier(final SpacePE space, final long spaceTechId) { - return (space.getId() == spaceTechId) - && space.getDatabaseInstance().getUuid().equals(databaseInstanceUUID); + return (space.getId() == spaceTechId); } protected Status evaluateSpace(final PersonPE person, diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/internal/authorization/ScreeningPlateListReadOnlyPredicate.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/internal/authorization/ScreeningPlateListReadOnlyPredicate.java index 263a3421cf5da7edb7ac860d92cbeed2488b4cc4..e72ee957c54700582fb7b259bd00b772d3bfb100 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/internal/authorization/ScreeningPlateListReadOnlyPredicate.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/internal/authorization/ScreeningPlateListReadOnlyPredicate.java @@ -69,7 +69,7 @@ public class ScreeningPlateListReadOnlyPredicate extends permIds.add(plate.getPermId()); hasPermId = true; } - + final String spaceCodeOrNull = SpaceCodeHelper.tryGetSpaceCode(person, plate.tryGetSpaceCode()); if (spaceCodeOrNull == null && hasPermId == false) @@ -96,8 +96,7 @@ public class ScreeningPlateListReadOnlyPredicate extends continue; // Shared samples will return a spaceId of null (or 0 in EoDSQL). } final Status status = - evaluate(person, allowedRoles, authorizationDataProvider - .getHomeDatabaseInstance(), spaceId); + evaluate(person, allowedRoles, spaceId); if (Status.OK.equals(status) == false) { return status;