public Privilege[] getPrivileges(String s) throws RepositoryException { Item item = registrySession.getItem(s); if (item instanceof Property) { throw new PathNotFoundException("No privilages can be added for Properties"); } Set<Privilege> privileges = new HashSet<Privilege>(); if (accessCtrlPolicies.get(s) instanceof RegistryAccessControlList) { AccessControlEntry[] accessNtries = ((RegistryAccessControlList) accessCtrlPolicies.get(s)).getAccessControlEntries(); for (AccessControlEntry ac : accessNtries) { if (ac != null) { privileges.addAll(Arrays.asList(ac.getPrivileges())); } } } else { // TODO check how to apply NamedAccessControlPolicy } // Read-only session must have READ privilege on test node if (RegistryJCRSpecificStandardLoderUtil.isSessionReadOnly(registrySession.getUserID()) && !privileges.contains(privilegeRegistry.getPrivilegeFromName(Privilege.JCR_READ))) { privileges.add(privilegeRegistry.getPrivilegeFromName(Privilege.JCR_READ)); } if (privileges.size() != 0) { return privileges.toArray(new Privilege[privileges.size()]); } else return new Privilege[0]; }
public void setPolicy(String s, AccessControlPolicy accessControlPolicy) throws RepositoryException { boolean invalidPolicy = true; // Invalid policy may not be set by a READ-only session if (RegistryJCRSpecificStandardLoderUtil.isSessionReadOnly(registrySession.getUserID())) { if ((accessControlPolicy instanceof RegistryAccessControlList)) { invalidPolicy = false; } else if ((accessControlPolicy instanceof RegistryNamedAccessControlPolicy)) { invalidPolicy = false; } if (invalidPolicy) { throw new AccessControlException("Invalid policy may not be set by a READ-only session"); } } if (accessCtrlPolicies.get(s) == null) { Set<AccessControlPolicy> policies = new HashSet<AccessControlPolicy>(); policies.add(accessControlPolicy); accessCtrlPolicies.put(s, policies); } else { accessCtrlPolicies.get(s).add(accessControlPolicy); // Set<AccessControlPolicy> temp = accessCtrlPolicies.get(s); // temp.add(accessControlPolicy); // accessCtrlPolicies.remove(s); // accessCtrlPolicies.put(s, temp); } }
public AccessControlPolicy[] getEffectivePolicies(String s) throws RepositoryException { if (RegistryJCRSpecificStandardLoderUtil.isSessionReadOnly(registrySession.getUserID())) { throw new AccessDeniedException("Read only session may not read AC content"); } Item item = registrySession.getItem(s); // check the validity of the path if (item instanceof Property) { throw new PathNotFoundException("Cannot apply policies to a property path"); } return getPolicies(s); }
public AccessControlPolicyIterator getApplicablePolicies(String s) throws RepositoryException { if (RegistryJCRSpecificStandardLoderUtil.isSessionReadOnly(registrySession.getUserID())) { throw new AccessDeniedException("Read only session may not read AC content"); } if (accessCtrlPolicies.size() != 0) { return new RegistryAccessControlPolicyIterator(accessCtrlPolicies.get(s)); } else { return new RegistryAccessControlPolicyIterator(new HashSet()); } }
public AccessControlPolicy[] getPolicies(String s) throws RepositoryException { if (RegistryJCRSpecificStandardLoderUtil.isSessionReadOnly(registrySession.getUserID())) { throw new AccessDeniedException("Read only session may not read AC content"); } if (accessCtrlPolicies.get(s) != null) { return accessCtrlPolicies .get(s) .toArray(new AccessControlPolicy[accessCtrlPolicies.get(s).size()]); } else { return new AccessControlPolicy[0]; } }