Permissions 正在获取用户的节点列表
我创建了许多“nt:folder”节点,每次创建文件夹时,都会将权限授予不同的用户集。 现在,我需要获得基于userwith read和write任务的节点列表 使用jackrabbit 2.6.0 用户创建和权限分配的部分片段: 用户创建 添加条目 临时文件夹访问Permissions 正在获取用户的节点列表,permissions,jackrabbit,jcr,jcr-sql2,Permissions,Jackrabbit,Jcr,Jcr Sql2,我创建了许多“nt:folder”节点,每次创建文件夹时,都会将权限授予不同的用户集。 现在,我需要获得基于userwith read和write任务的节点列表 使用jackrabbit 2.6.0 用户创建和权限分配的部分片段: 用户创建 添加条目 临时文件夹访问 谢谢。我最近发布了关于回答类似问题的帖子: 这是我的示例查询: select resource.*, ace.* from [nt:hierarchyNode] as resource inner join [rep:ACL] as
谢谢。我最近发布了关于回答类似问题的帖子: 这是我的示例查询:
select resource.*, ace.*
from [nt:hierarchyNode] as resource
inner join [rep:ACL] as acl
ON ISCHILDNODE(acl, resource)
inner join [rep:ACE] as ace
ON ISCHILDNODE(ace, acl)
where ace.[rep:principalName] = 'username'
尝试执行您的查询,得到错误信息。Error-javax.jcr.RepositoryException:此查询结果包含多个选择器代码段:String sqlStatement1=select resource.*,ace.*从[nt:hierarchyNode]作为资源内部联接[rep:ACL]作为ISCHILDNODEacl上的ACL,资源+内部联接[rep:ace]作为ISchildNode上的ace,ACL where ace。[rep:principalName]='testPrincipal';Query Query=queryManager.createQuerysqlStatement1,Query.JCR_SQL2;QueryResult result=query.execute;NodeInterator NodeInterator1=result.getNodes;问题是您的节点运算符NodeIterator 1=result.getNodes;调用-在我的示例查询中有两个选择器-为您提供来自nt:hierarchyNode和rep:ACE的值。将查询更改为just resource.*以避免错误。如果希望在结果中同时包含资源和主体详细信息,请保持查询原样并使用result.getRows。对于可以通过getNode'selectorName'在节点上获得的每一行。
javax.jcr.security.Privilege[] privileges = new
javax.jcr.security.Privilege[] {
accessControlManager.privilegeFromName(javax.jcr.security.Privilege.JCR_WRITE)
};
Map<String, Value> restrictions = new HashMap<String, Value>();
restrictions.put("rep:nodePath",
valueFactory.createValue(userDbInstance.getUserFilePath(),
PropertyType.PATH)); restrictions.put("rep:glob",
valueFactory.createValue("*"));
accessControlList.addEntry(userPrincipal, privileges, true /*allow or deny */, restrictions);
public Node addNode(String parent, String name, ETNodeTypes type) throws JCRServiceException {
checkSession();
try {
name = Text.escapeIllegalJcrChars(name);
logger.debug("Adding Node: " + parent + " type: " + type + " name(escaped):" + name);
Node node = session.getNode(parent).addNode(name, type.getName());
node.addMixin("rep:AccessControllable");
logger.debug("Node added: " + node.getPath());
return node;
} catch (RepositoryException e) {
e.printStackTrace();
throw new JCRServiceException(e,e.getMessage(),"Unable to create");
}
}
select resource.*, ace.*
from [nt:hierarchyNode] as resource
inner join [rep:ACL] as acl
ON ISCHILDNODE(acl, resource)
inner join [rep:ACE] as ace
ON ISCHILDNODE(ace, acl)
where ace.[rep:principalName] = 'username'