Search in sources :

Example 6 with Capability

use of org.alfresco.module.org_alfresco_module_rm.capability.Capability in project records-management by Alfresco.

the class CreateHoldTest method setupTestUsersImpl.

/**
 * @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase#setupTestUsersImpl(org.alfresco.service.cmr.repository.NodeRef)
 */
@Override
protected void setupTestUsersImpl(NodeRef filePlan) {
    super.setupTestUsersImpl(filePlan);
    // Create test user
    testUser = generate();
    createPerson(testUser);
    // Join the RM site
    siteService.setMembership(siteId, testUser, SITE_CONSUMER);
    // Create role
    Set<Capability> capabilities = new HashSet<Capability>(2);
    capabilities.add(capabilityService.getCapability(VIEW_RECORDS));
    capabilities.add(capabilityService.getCapability(CREATE_HOLD));
    Role role = filePlanRoleService.createRole(filePlan, generate(), generate(), capabilities);
    // Add the test user to RM Records Manager role
    filePlanRoleService.assignRoleToAuthority(filePlan, role.getName(), testUser);
}
Also used : Role(org.alfresco.module.org_alfresco_module_rm.role.Role) Capability(org.alfresco.module.org_alfresco_module_rm.capability.Capability) HashSet(java.util.HashSet)

Example 7 with Capability

use of org.alfresco.module.org_alfresco_module_rm.capability.Capability in project records-management by Alfresco.

the class ScriptRecordsManagmentNode method hasCapability.

public boolean hasCapability(String capabilityName) {
    boolean result = false;
    CapabilityService capabilityService = (CapabilityService) rmServices.getCapabilityService();
    Capability capability = capabilityService.getCapability(capabilityName);
    if (capability != null) {
        Map<Capability, AccessStatus> map = capabilityService.getCapabilitiesAccessState(nodeRef, Collections.singletonList(capabilityName));
        if (map.containsKey(capability)) {
            AccessStatus accessStatus = map.get(capability);
            if (!accessStatus.equals(AccessStatus.DENIED)) {
                result = true;
            }
        }
    }
    return result;
}
Also used : CapabilityService(org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService) Capability(org.alfresco.module.org_alfresco_module_rm.capability.Capability) AccessStatus(org.alfresco.service.cmr.security.AccessStatus)

Example 8 with Capability

use of org.alfresco.module.org_alfresco_module_rm.capability.Capability in project records-management by Alfresco.

the class CommonRMTestUtils method createRole.

public Role createRole(NodeRef filePlan, String roleName, String... capabilityNames) {
    Set<Capability> capabilities = new HashSet<Capability>(capabilityNames.length);
    for (String name : capabilityNames) {
        Capability capability = capabilityService.getCapability(name);
        if (capability == null) {
            throw new AlfrescoRuntimeException("capability " + name + " not found.");
        }
        capabilities.add(capability);
    }
    return filePlanRoleService.createRole(filePlan, roleName, roleName, capabilities);
}
Also used : Capability(org.alfresco.module.org_alfresco_module_rm.capability.Capability) AlfrescoRuntimeException(org.alfresco.error.AlfrescoRuntimeException) HashSet(java.util.HashSet)

Example 9 with Capability

use of org.alfresco.module.org_alfresco_module_rm.capability.Capability in project records-management by Alfresco.

the class MoveRecordFolderTest method testMoveCutoffRecordFolder.

/**
 * Try and move a cutoff folder
 *
 * @see https://issues.alfresco.com/jira/browse/RM-1039
 */
public void testMoveCutoffRecordFolder() throws Exception {
    final NodeRef destination = doTestInTransaction(new Test<NodeRef>() {

        @Override
        public NodeRef run() {
            // create a record category (no disposition schedule)
            return filePlanService.createRecordCategory(filePlan, "Caitlin Reed");
        }
    });
    final NodeRef testFolder = doTestInTransaction(new Test<NodeRef>() {

        @Override
        public NodeRef run() {
            // create folder
            NodeRef testFolder = recordFolderService.createRecordFolder(rmContainer, "Peter Edward Francis");
            // complete event
            Map<String, Serializable> params = new HashMap<String, Serializable>(1);
            params.put(CompleteEventAction.PARAM_EVENT_NAME, CommonRMTestUtils.DEFAULT_EVENT_NAME);
            rmActionService.executeRecordsManagementAction(testFolder, CompleteEventAction.NAME, params);
            // cutoff folder
            rmActionService.executeRecordsManagementAction(testFolder, CutOffAction.NAME);
            return testFolder;
        }

        @Override
        public void test(NodeRef testFolder) throws Exception {
            // take a look at the move capability
            Capability moveCapability = capabilityService.getCapability("MoveRecordFolder");
            assertEquals(AccessDecisionVoter.ACCESS_DENIED, moveCapability.evaluate(testFolder, destination));
        }
    });
    doTestInTransaction(new FailureTest() {

        @Override
        public void run() throws Exception {
            fileFolderService.move(testFolder, destination, null).getNodeRef();
        }
    });
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) Serializable(java.io.Serializable) Capability(org.alfresco.module.org_alfresco_module_rm.capability.Capability) HashMap(java.util.HashMap) Map(java.util.Map)

Example 10 with Capability

use of org.alfresco.module.org_alfresco_module_rm.capability.Capability in project records-management by Alfresco.

the class RecordServiceImplTest method testCreateRecord.

/**
 * @see RecordService#createRecord(org.alfresco.service.cmr.repository.NodeRef,
 *      org.alfresco.service.cmr.repository.NodeRef)
 */
public void testCreateRecord() throws Exception {
    // show that users without WRITE can not create a record from a document
    doTestInTransaction(new FailureTest("Can not create a record from a document if you do not have WRITE permissions.", AccessDeniedException.class) {

        public void run() throws Exception {
            recordService.createRecord(filePlan, dmDocument);
        }
    }, dmConsumer);
    // create record from document
    doTestInTransaction(new Test<Void>() {

        private NodeRef originalLocation;

        @Override
        public Void run() {
            originalLocation = nodeService.getPrimaryParent(dmDocument).getParentRef();
            assertFalse(recordService.isRecord(dmDocument));
            assertFalse(extendedSecurityService.hasExtendedSecurity(dmDocument));
            checkPermissions(// file plan
            READ_RECORDS, // file plan
            AccessStatus.DENIED, // unfiled container
            AccessStatus.DENIED, // record category
            AccessStatus.DENIED, // record folder
            AccessStatus.DENIED, // doc/record
            AccessStatus.DENIED);
            assertEquals(AccessStatus.DENIED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS));
            checkPermissions(// file plan
            FILING, // file plan
            AccessStatus.DENIED, // unfiled container
            AccessStatus.DENIED, // record category
            AccessStatus.DENIED, // record folder
            AccessStatus.DENIED, // doc/record
            AccessStatus.DENIED);
            recordService.createRecord(filePlan, dmDocument);
            return null;
        }

        public void test(Void result) {
            checkPermissions(READ_RECORDS, // file plan
            AccessStatus.DENIED, // unfiled container
            AccessStatus.DENIED, // record category
            AccessStatus.DENIED, // record folder
            AccessStatus.DENIED, // doc/record
            AccessStatus.ALLOWED);
            assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS));
            checkPermissions(FILING, // file plan
            AccessStatus.DENIED, // unfiled container
            AccessStatus.DENIED, // record category
            AccessStatus.DENIED, // record folder
            AccessStatus.DENIED, // doc/record
            AccessStatus.ALLOWED);
            assertTrue(recordService.isRecord(dmDocument));
            assertTrue(extendedSecurityService.hasExtendedSecurity(dmDocument));
            assertFalse(recordService.isFiled(dmDocument));
            // show that the record has meta-data about it's original
            // location
            assertTrue(nodeService.hasAspect(dmDocument, ASPECT_RECORD_ORIGINATING_DETAILS));
            assertEquals(originalLocation, nodeService.getProperty(dmDocument, PROP_RECORD_ORIGINATING_LOCATION));
            assertFalse(originalLocation == nodeService.getPrimaryParent(dmDocument).getParentRef());
            // show that the record is linked to it's original location
            assertEquals(2, nodeService.getParentAssocs(dmDocument).size());
            // ****
            // Capability Tests
            // ****
            assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS));
            assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.EDIT_NON_RECORD_METADATA));
            Capability filling = capabilityService.getCapability("FileRecords");
            assertEquals(AccessStatus.DENIED, filling.hasPermission(dmDocument));
            Capability editRecordMetadata = capabilityService.getCapability("EditNonRecordMetadata");
            assertEquals(AccessStatus.ALLOWED, editRecordMetadata.hasPermission(dmDocument));
            Capability updateProperties = capabilityService.getCapability("UpdateProperties");
            assertEquals(AccessStatus.ALLOWED, updateProperties.hasPermission(dmDocument));
        }
    }, dmCollaborator);
    // check the consumer's permissions are correct for the newly created
    // document
    doTestInTransaction(new Test<Void>() {

        @Override
        public Void run() {
            checkPermissions(// file plan
            READ_RECORDS, // file plan
            AccessStatus.DENIED, // unfiled container
            AccessStatus.DENIED, // record category
            AccessStatus.DENIED, // record folder
            AccessStatus.DENIED, // doc/record
            AccessStatus.ALLOWED);
            checkPermissions(// file plan
            FILING, // file plan
            AccessStatus.DENIED, // unfiled container
            AccessStatus.DENIED, // record category
            AccessStatus.DENIED, // record folder
            AccessStatus.DENIED, // doc/record
            AccessStatus.DENIED);
            assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS));
            assertEquals(AccessStatus.DENIED, permissionService.hasPermission(filePlan, RMPermissionModel.EDIT_NON_RECORD_METADATA));
            Capability filling = capabilityService.getCapability("FileRecords");
            assertEquals(AccessStatus.DENIED, filling.hasPermission(dmDocument));
            Capability editRecordMetadata = capabilityService.getCapability("EditNonRecordMetadata");
            assertEquals(AccessStatus.DENIED, editRecordMetadata.hasPermission(dmDocument));
            Capability updateProperties = capabilityService.getCapability("UpdateProperties");
            assertEquals(AccessStatus.DENIED, updateProperties.hasPermission(dmDocument));
            return null;
        }
    }, dmConsumer);
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) AccessDeniedException(org.alfresco.repo.security.permissions.AccessDeniedException) Capability(org.alfresco.module.org_alfresco_module_rm.capability.Capability) AccessDeniedException(org.alfresco.repo.security.permissions.AccessDeniedException)

Aggregations

Capability (org.alfresco.module.org_alfresco_module_rm.capability.Capability)29 NodeRef (org.alfresco.service.cmr.repository.NodeRef)15 HashSet (java.util.HashSet)8 HashMap (java.util.HashMap)6 Map (java.util.Map)5 Serializable (java.io.Serializable)4 Role (org.alfresco.module.org_alfresco_module_rm.role.Role)4 AccessStatus (org.alfresco.service.cmr.security.AccessStatus)4 JSONArray (org.json.JSONArray)4 JSONObject (org.json.JSONObject)4 DeclarativeCapability (org.alfresco.module.org_alfresco_module_rm.capability.declarative.DeclarativeCapability)3 DeclarativeCompositeCapability (org.alfresco.module.org_alfresco_module_rm.capability.declarative.DeclarativeCompositeCapability)3 WebScriptException (org.springframework.extensions.webscripts.WebScriptException)3 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 Set (java.util.Set)2 AlfrescoRuntimeException (org.alfresco.error.AlfrescoRuntimeException)2 RunAsWork (org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork)2 AccessDeniedException (org.alfresco.repo.security.permissions.AccessDeniedException)2 AccessPermission (org.alfresco.service.cmr.security.AccessPermission)2