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;
}
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;
}
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;
}
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!"));
}
}
Aggregations