Wednesday, 2 August 2017

How to apply user permissions programatically in AEM?

Using JackrabbitAccessControlList api we can apply permission.
Sample code:

//Defining Privilages array to store type of permission.
Privilege privileges[] = new Privilege[2];

try {
UserManager usermanager = AccessControlUtil.getUserManager(session);

//user Id or Group Id
Authorizable authorizable = usermanager.getAuthorizable(userID);
AccessControlManager accessControlManager = session.getAccessControlManager();

//Resource path to which we need to apply permissions.
AccessControlPolicyIterator policyIterator = accessControlManager.getApplicablePolicies("/content/geometrixx/en");

JackrabbitAccessControlList acl;
try {
acl = (JackrabbitAccessControlList) policyIterator.nextAccessControlPolicy();
} catch (NoSuchElementException nse) {
LOG.info(nse.getMessage());
acl = (JackrabbitAccessControlList) accessControlManager.getPolicies("/content/geometrixx/en")[0];
}

privileges[0] = accessControlManager.privilegeFromName(Privilege.JCR_READ);
privileges[1] = accessControlManager.privilegeFromName(Privilege.JCR_WRITE);

boolean isAllow = true; // true to allow, false for deney
acl.addEntry(authorizable.getPrincipal(), privileges, isAllow);
accessControlManager.setPolicy("/content/geometrixx/en", acl);
session.save();
}catch (Exception e) {
LOG.error("Exception : {}",e);
}



No comments:

Post a Comment