blob: 01b32b6982ded867709b48de31891bf1677ae970 [file] [log] [blame]
<%
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var factory = Packages.javax.json.Json.createBuilderFactory(Packages.java.util.Collections.emptyMap());
var jsonObjBuilder = factory.createObjectBuilder();
var privilegesInfo = new Packages.org.apache.sling.jcr.jackrabbit.accessmanager.PrivilegesInfo();
jsonObjBuilder.add("canAddChildren", privilegesInfo.canAddChildren(currentNode));
jsonObjBuilder.add("canDeleteChildren", privilegesInfo.canDeleteChildren(currentNode));
jsonObjBuilder.add("canDelete", privilegesInfo.canDelete(currentNode));
jsonObjBuilder.add("canModifyProperties", privilegesInfo.canModifyProperties(currentNode));
jsonObjBuilder.add("canReadAccessControl", privilegesInfo.canReadAccessControl(currentNode));
jsonObjBuilder.add("canModifyAccessControl", privilegesInfo.canModifyAccessControl(currentNode));
if (privilegesInfo.canReadAccessControl(currentNode)) {
var declaredBuilder = factory.createObjectBuilder();
var declared = privilegesInfo.getDeclaredAccessRights(currentNode);
if (declared != null) {
var iterator = declared.entrySet().iterator();
while (iterator.hasNext()) {
var next = iterator.next();
var principal = next.getKey();
var accessRights = next.getValue();
var entryBuilder = factory.createObjectBuilder();
var grantedBuilder = factory.createArrayBuilder();
var granted = accessRights.getGranted();
var grantedIt = granted.iterator();
while (grantedIt.hasNext()) {
var next = grantedIt.next();
var name = next.getName();
grantedBuilder.add(name);
}
entryBuilder.add("granted", grantedBuilder);
var deniedBuilder = factory.createArrayBuilder();
var denied = accessRights.getDenied();
var deniedIt = denied.iterator();
while (deniedIt.hasNext()) {
var next = deniedIt.next();
var name = next.getName();
deniedBuilder.add(name);
}
entryBuilder.add("denied", deniedBuilder);
declaredBuilder.add(principal.getName(), entryBuilder);
}
}
jsonObjBuilder.add("declaredAccessRights", declaredBuilder);
var effectiveBuilder = factory.createObjectBuilder();
var effective = privilegesInfo.getEffectiveAccessRights(currentNode);
if (effective != null) {
var iterator = effective.entrySet().iterator();
while (iterator.hasNext()) {
var next = iterator.next();
var principal = next.getKey();
var accessRights = next.getValue();
var entryBuilder = factory.createObjectBuilder();
var grantedBuilder = factory.createArrayBuilder();
var granted = accessRights.getGranted();
var grantedIt = granted.iterator();
while (grantedIt.hasNext()) {
var next = grantedIt.next();
var name = next.getName();
grantedBuilder.add(name);
}
entryBuilder.add("granted", grantedBuilder);
var deniedBuilder = factory.createArrayBuilder();
var denied = accessRights.getDenied();
var deniedIt = denied.iterator();
while (deniedIt.hasNext()) {
var next = deniedIt.next();
var name = next.getName();
deniedBuilder.add(name);
}
entryBuilder.add("denied", deniedBuilder);
effectiveBuilder.add(principal.getName(), entryBuilder);
}
}
jsonObjBuilder.add("effectiveAccessRights", effectiveBuilder);
}
var jsonObj = jsonObjBuilder.build();
var jsonWriter = Packages.javax.json.Json.createWriter(response.getWriter());
jsonWriter.writeObject(jsonObj);
jsonWriter.close();
%>