Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Permissions 正在获取用户的节点列表_Permissions_Jackrabbit_Jcr_Jcr Sql2 - Fatal编程技术网

Permissions 正在获取用户的节点列表

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

我创建了许多“nt:folder”节点,每次创建文件夹时,都会将权限授予不同的用户集。 现在,我需要获得基于userwith read和write任务的节点列表

使用jackrabbit 2.6.0

用户创建和权限分配的部分片段:

用户创建 添加条目 临时文件夹访问
谢谢。

我最近发布了关于回答类似问题的帖子:

这是我的示例查询:

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'