Search in sources :

Example 11 with Acl

use of org.apache.chemistry.opencmis.commons.data.Acl in project copper-cms by PogeyanOSS.

the class ObjectActor method createRelationship.

private JSONObject createRelationship(PostRequest request) throws CmisInvalidArgumentException, CmisObjectNotFoundException, IllegalArgumentException, CmisRuntimeException {
    String permission = request.getUserObject().getPermission();
    String principalId = request.getUserObject().getUserDN();
    IUserGroupObject[] groups = request.getUserObject().getGroups();
    if (!Helpers.getGroupPermission(permission, groups)) {
        throw new CmisRuntimeException(request.getUserName() + " is not authorized to applyAcl.");
    }
    boolean succinct = request.getBooleanParameter(QueryGetRequest.CONTROL_SUCCINCT, false);
    DateTimeFormat dateTimeFormat = request.getDateTimeFormatParameter();
    Properties prop = CmisPropertyConverter.Impl.createNewProperties(request.getPropertyData(), request.getRepositoryId());
    String folderId = request.getObjectId() != null ? request.getObjectId() : null;
    Acl aclImp = CmisUtils.Object.getAcl(request.getAddAcl(), principalId, permission);
    String newObjectId = CmisObjectService.Impl.createRelationship(request.getRepositoryId(), folderId, prop, request.getPolicies(), aclImp, request.getRemoveAcl(), request.getUserObject().getUserDN());
    ObjectData object = CmisObjectService.Impl.getSimpleObject(request.getRepositoryId(), newObjectId, request.getUserObject().getUserDN(), BaseTypeId.CMIS_RELATIONSHIP);
    if (object == null) {
        throw new CmisRuntimeException("New folder is null!");
    }
    // return object
    JSONObject jsonObject = JSONConverter.convert(object, null, JSONConverter.PropertyMode.CHANGE, succinct, dateTimeFormat);
    return jsonObject;
}
Also used : IUserGroupObject(com.pogeyan.cmis.api.auth.IUserGroupObject) CmisRuntimeException(org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException) JSONObject(org.apache.chemistry.opencmis.commons.impl.json.JSONObject) ObjectData(org.apache.chemistry.opencmis.commons.data.ObjectData) Acl(org.apache.chemistry.opencmis.commons.data.Acl) Properties(org.apache.chemistry.opencmis.commons.data.Properties) DateTimeFormat(org.apache.chemistry.opencmis.commons.enums.DateTimeFormat)

Example 12 with Acl

use of org.apache.chemistry.opencmis.commons.data.Acl in project copper-cms by PogeyanOSS.

the class ObjectActor method createPolicy.

private JSONObject createPolicy(PostRequest request) throws CmisInvalidArgumentException, CmisObjectNotFoundException, IllegalArgumentException, CmisRuntimeException {
    String permission = request.getUserObject().getPermission();
    String principalId = request.getUserObject().getUserDN();
    IUserGroupObject[] groups = request.getUserObject().getGroups();
    if (!Helpers.getGroupPermission(permission, groups)) {
        throw new CmisRuntimeException(request.getUserName() + " is not authorized to applyAcl.");
    }
    String folderId = request.getObjectId() != null ? request.getObjectId() : null;
    boolean succinct = request.getBooleanParameter(QueryGetRequest.CONTROL_SUCCINCT, false);
    DateTimeFormat dateTimeFormat = request.getDateTimeFormatParameter();
    Properties prop = CmisPropertyConverter.Impl.createNewProperties(request.getPropertyData(), request.getRepositoryId());
    Acl aclImp = CmisUtils.Object.getAcl(request.getAddAcl(), principalId, permission);
    String newObjectId = CmisObjectService.Impl.createPolicy(request.getRepositoryId(), prop, folderId, request.getPolicies(), aclImp, request.getRemoveAcl(), request.getUserObject().getUserDN());
    ObjectData object = CmisObjectService.Impl.getSimpleObject(request.getRepositoryId(), newObjectId, request.getUserObject().getUserDN(), BaseTypeId.CMIS_POLICY);
    if (object == null) {
        throw new CmisRuntimeException("New folder is null!");
    }
    // return object
    JSONObject jsonObject = JSONConverter.convert(object, null, JSONConverter.PropertyMode.CHANGE, succinct, dateTimeFormat);
    return jsonObject;
}
Also used : IUserGroupObject(com.pogeyan.cmis.api.auth.IUserGroupObject) CmisRuntimeException(org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException) JSONObject(org.apache.chemistry.opencmis.commons.impl.json.JSONObject) ObjectData(org.apache.chemistry.opencmis.commons.data.ObjectData) Acl(org.apache.chemistry.opencmis.commons.data.Acl) Properties(org.apache.chemistry.opencmis.commons.data.Properties) DateTimeFormat(org.apache.chemistry.opencmis.commons.enums.DateTimeFormat)

Example 13 with Acl

use of org.apache.chemistry.opencmis.commons.data.Acl in project copper-cms by PogeyanOSS.

the class AclActor method applyACL.

private JSONObject applyACL(PostRequest t) throws CmisObjectNotFoundException, CmisRuntimeException {
    String permission = t.getUserObject().getPermission();
    if (!Helpers.checkingUserPremission(permission, "post")) {
        throw new CmisRuntimeException(t.getUserName() + " is not authorized to applyAcl.");
    }
    String aclPro = t.getAclPropagation();
    String objectId = t.getObjectId();
    Acl objectAcl = CmisAclServices.Impl.applyAcl(t.getRepositoryId(), objectId, t.getAddAcl(), t.getRemoveAcl(), AclPropagation.fromValue(aclPro), null, null, CapabilityAcl.NONE, t.getUserObject().getUserDN());
    if (objectAcl == null) {
        throw new CmisRuntimeException("object acl is null!");
    }
    JSONObject jsonObject = JSONConverter.convert(objectAcl);
    return jsonObject;
}
Also used : CmisRuntimeException(org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException) JSONObject(org.apache.chemistry.opencmis.commons.impl.json.JSONObject) Acl(org.apache.chemistry.opencmis.commons.data.Acl) CapabilityAcl(org.apache.chemistry.opencmis.commons.enums.CapabilityAcl)

Example 14 with Acl

use of org.apache.chemistry.opencmis.commons.data.Acl in project copper-cms by PogeyanOSS.

the class ACLSmokeTest method run.

@Override
public void run(Session session) {
    CmisTestResult f;
    if (supportsACLs(session)) {
        try {
            // create folder and document
            Folder testFolder = createTestFolder(session);
            Document doc = createDocument(session, testFolder, "acltest.txt", "ACL test");
            // check if there is an ACL
            Acl acl = doc.getAcl();
            f = createResult(FAILURE, "ACLs are supported but newly created document has no ACL!");
            addResult(assertNotNull(acl, null, f));
            // check basic permissions
            Acl basicAcl = session.getAcl(doc, true);
            f = createResult(FAILURE, "ACLs are supported but repository does not return a basic ACL for the newly created document!");
            addResult(assertNotNull(basicAcl, null, f));
            if (basicAcl != null) {
                addResult(checkACL(session, basicAcl, false, "Basic ACL"));
                if (basicAcl.getAces() != null) {
                    for (Ace ace : basicAcl.getAces()) {
                        if (ace.getPermissions() != null) {
                            for (String permission : ace.getPermissions()) {
                                if (!"cmis:read".equals(permission) && !"cmis:write".equals(permission) && !"cmis:all".equals(permission)) {
                                    addResult(createResult(FAILURE, "ACE contains a non-basic permission: " + permission));
                                }
                            }
                        }
                    }
                }
            }
            if (getAclCapability(session) == CapabilityAcl.MANAGE && !Boolean.FALSE.equals(doc.getType().isControllableAcl())) {
                String principal = getParameters().get(TestParameters.DEFAULT_ACL_PRINCIPAL);
                if (principal == null) {
                    principal = TestParameters.DEFAULT_ACL_PRINCIPAL_VALUE;
                }
                // apply permission "cmis:write"
                List<Ace> aces = new ArrayList<Ace>();
                aces.add(session.getObjectFactory().createAce(principal, Collections.singletonList("cmis:write")));
                session.applyAcl(doc, aces, null, null);
                if (session.getRepositoryInfo().getAclCapabilities().getAclPropagation() != AclPropagation.REPOSITORYDETERMINED) {
                    // set permission "cmis:all"
                    aces = new ArrayList<Ace>();
                    aces.add(session.getObjectFactory().createAce(principal, Collections.singletonList("cmis:all")));
                    session.setAcl(doc, aces);
                }
            } else {
                addResult(createResult(INFO, "The repository or the type '" + doc.getType().getId() + "' don't support managing ACLs."));
            }
            deleteObject(doc);
        } finally {
            deleteTestFolder();
        }
    } else {
        addResult(createResult(SKIPPED, "ACLs are not supported. Test Skipped!"));
    }
}
Also used : Ace(org.apache.chemistry.opencmis.commons.data.Ace) CmisTestResult(org.apache.chemistry.opencmis.tck.CmisTestResult) ArrayList(java.util.ArrayList) Acl(org.apache.chemistry.opencmis.commons.data.Acl) CapabilityAcl(org.apache.chemistry.opencmis.commons.enums.CapabilityAcl) Folder(org.apache.chemistry.opencmis.client.api.Folder) Document(org.apache.chemistry.opencmis.client.api.Document)

Aggregations

Acl (org.apache.chemistry.opencmis.commons.data.Acl)14 CmisRuntimeException (org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException)8 JSONObject (org.apache.chemistry.opencmis.commons.impl.json.JSONObject)8 IUserGroupObject (com.pogeyan.cmis.api.auth.IUserGroupObject)6 Ace (org.apache.chemistry.opencmis.commons.data.Ace)6 ObjectData (org.apache.chemistry.opencmis.commons.data.ObjectData)6 Properties (org.apache.chemistry.opencmis.commons.data.Properties)6 DateTimeFormat (org.apache.chemistry.opencmis.commons.enums.DateTimeFormat)6 Folder (org.apache.chemistry.opencmis.client.api.Folder)5 Session (org.apache.chemistry.opencmis.client.api.Session)4 CapabilityAcl (org.apache.chemistry.opencmis.commons.enums.CapabilityAcl)3 Test (org.junit.Test)3 ArrayList (java.util.ArrayList)2 VersioningState (org.apache.chemistry.opencmis.commons.enums.VersioningState)2 Document (org.apache.chemistry.opencmis.client.api.Document)1 AccessControlListImpl (org.apache.chemistry.opencmis.commons.impl.dataobjects.AccessControlListImpl)1 CmisTestResult (org.apache.chemistry.opencmis.tck.CmisTestResult)1