in src/main/java/org/apache/sling/pipes/internal/ACLPipe.java [139:172]
void bindACLs(Resource resource) {
try {
Authorizable auth = checkIsAuthorizableResource(resource);
if ( null != auth ) {
//get privileges for an auth on the repository , authorizable flag should be true if resource is an authorizable
bindAclsForAuthorizableResource(auth);
return;
}
logger.info("binding acls for resource at path {}", resource.getPath());
AccessControlList acl = AccessControlUtils.getAccessControlList(session, resource.getPath());
JackrabbitAccessControlEntry[] entries = (JackrabbitAccessControlEntry[]) acl.getAccessControlEntries();
JsonArrayBuilder principalPrivilegesArray = Json.createArrayBuilder();
for (JackrabbitAccessControlEntry entry : entries) {
JsonObjectBuilder principalPrivilegesMappings = Json.createObjectBuilder();
JsonArrayBuilder privilegeSet = Json.createArrayBuilder();
for ( Privilege privilege : entry.getPrivileges() ){
privilegeSet.add(privilege.getName());
}
principalPrivilegesMappings.add(PN_AUTHORIZABLE, entry.getPrincipal().getName());
principalPrivilegesMappings.add(PRIVILEGES_JSON_KEY, privilegeSet);
if (entry.isAllow()) {
principalPrivilegesMappings.add(PN_ALLOW, true);
} else {
principalPrivilegesMappings.add(PN_DENY, true);
}
principalPrivilegesArray.add(principalPrivilegesMappings);
}
outputBinding = JsonUtil.toString(principalPrivilegesArray);
} catch ( Exception e ) {
outputBinding = JsonUtil.toString(Json.createObjectBuilder());
logger.error("unable to bind acls", e);
}
}