Community admin should also be considered a Collection admin

This commit is contained in:
Luca Giamminonni
2020-10-29 16:15:26 +01:00
parent ae02b261fc
commit d8d3aca995
2 changed files with 39 additions and 1 deletions

View File

@@ -460,7 +460,7 @@ public class AuthorizeServiceImpl implements AuthorizeService {
groupService.allMemberGroups(c, e),
Constants.ADMIN, Constants.COLLECTION);
if (CollectionUtils.isNotEmpty(policies)) {
if (CollectionUtils.isNotEmpty(policies) || isCommunityAdmin(c, e)) {
return true;
}
}

View File

@@ -13,8 +13,10 @@ import java.sql.SQLException;
import org.dspace.AbstractUnitTest;
import org.dspace.authorize.factory.AuthorizeServiceFactory;
import org.dspace.authorize.service.ResourcePolicyService;
import org.dspace.content.Collection;
import org.dspace.content.Community;
import org.dspace.content.factory.ContentServiceFactory;
import org.dspace.content.service.CollectionService;
import org.dspace.content.service.CommunityService;
import org.dspace.core.Constants;
import org.dspace.eperson.EPerson;
@@ -36,6 +38,7 @@ public class AuthorizeServiceTest extends AbstractUnitTest {
protected ResourcePolicyService resourcePolicyService = AuthorizeServiceFactory.getInstance()
.getResourcePolicyService();
protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService();
protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService();
public AuthorizeServiceTest() {
}
@@ -125,4 +128,39 @@ public class AuthorizeServiceTest extends AbstractUnitTest {
throw new AssertionError(ex);
}
}
@Test
public void testIsCollectionAdmin() throws SQLException, AuthorizeException {
context.turnOffAuthorisationSystem();
Community community = communityService.create(null, context);
Collection collection = collectionService.create(context, community);
EPerson eperson = ePersonService.create(context);
Group administrators = collectionService.createAdministrators(context, collection);
groupService.addMember(context, administrators, eperson);
context.restoreAuthSystemState();
context.commit();
Assert.assertTrue(authorizeService.isCollectionAdmin(context, eperson));
}
@Test
public void testIsCollectionAdminReturnsTrueIfTheUserIsCommunityAdmin() throws SQLException, AuthorizeException {
context.turnOffAuthorisationSystem();
Community community = communityService.create(null, context);
EPerson eperson = ePersonService.create(context);
Group administrators = communityService.createAdministrators(context, community);
groupService.addMember(context, administrators, eperson);
context.restoreAuthSystemState();
context.commit();
Assert.assertTrue(authorizeService.isCollectionAdmin(context, eperson));
}
}