103818 Add boolean parameter to ItemServiceImpl#inheritCollectionDefaultPolicies to decide whether to override item read policies

This commit is contained in:
Koen Pauwels
2023-08-04 15:34:14 +02:00
parent 54280e8fe2
commit e4ff24a2d9
3 changed files with 35 additions and 6 deletions

View File

@@ -920,12 +920,21 @@ public class ItemServiceImpl extends DSpaceObjectServiceImpl<Item> implements It
@Override
public void inheritCollectionDefaultPolicies(Context context, Item item, Collection collection)
throws SQLException, AuthorizeException {
inheritCollectionDefaultPolicies(context, item, collection, true);
}
@Override
public void inheritCollectionDefaultPolicies(Context context, Item item, Collection collection,
boolean overrideItemReadPolicies)
throws SQLException, AuthorizeException {
// If collection has READ policies, remove the item's READ policies.
List<ResourcePolicy> defaultCollectionPolicies = authorizeService
.getPoliciesActionFilter(context, collection, Constants.DEFAULT_ITEM_READ);
if (!defaultCollectionPolicies.isEmpty()) {
authorizeService.removePoliciesActionFilter(context, item, Constants.READ);
if (overrideItemReadPolicies) {
List<ResourcePolicy> defaultCollectionPolicies = authorizeService
.getPoliciesActionFilter(context, collection, Constants.DEFAULT_ITEM_READ);
if (!defaultCollectionPolicies.isEmpty()) {
authorizeService.removePoliciesActionFilter(context, item, Constants.READ);
}
}
adjustItemPolicies(context, item, collection);