0
많은 'nt : folder'Node
이 생성되었고 각 폴더가 생성 될 때 다른 사용자 집합에 사용 권한이 부여되었습니다. 이제 사용자 (읽기 및 쓰기 가능)를 기준으로 노드 목록을 가져와야합니다.사용자를위한 노드 목록 얻기
- 사용자 생성
UserManager userManager = ((JackrabbitSession) session).getUserManager();
org.apache.jackrabbit.api.security.user.User user =
(org.apache.jackrabbit.api.security.user.User)userManager.getAuthorizable(userName);
- : 잭 래빗 2.6.0 사용자 생성 및 privieges의 assignement의
부분 조각을 사용
항목
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);
노드 0을 추가 추가1,
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"); } }
감사합니다.
시도 :
이
내 예를 질의했다. 오류 ---- javax.jcr.RepositoryException는 : 문자열 sqlStatement1이 = "리소스를 선택 * 에이스 *에서 [NT : hierarchyNode]이 쿼리의 결과는 하나 이상의 선택 코드 조각이 포함되어 있습니다.. 자원으로 내부 조인 [ ACL : acl as ISCHILDNODE (acl, resource) "+ "에이스. [rep : principalName] = 'testPrincipal' ";에 내부 연결 [rep : ACE]를 ISCHILDNODE (ace, acl)로 입력하십시오. 쿼리 쿼리 = queryManager.createQuery (sqlStatement1, Query.JCR_SQL2); QueryResult result = query.execute(); NodeIterator nodeIterator1 = result.getNodes(); – techie2k'NodeIterator nodeIterator1 = result.getNodes();'호출 - 예제 쿼리에는 두 개의 선택자가있어'nt : hierarchyNode'와'rep : ACE' 둘 다에서 값을 얻을 수 있습니다. 오류를 피하려면 쿼리를'resource. * '로 변경하십시오. 결과에 리소스 및 주체 세부 정보가 모두 필요하면 쿼리를있는 그대로 유지하고'result.getRows() '를 사용하십시오. 각 행마다'getNode ('selectorName')'을 통해 노드에서 얻을 수 있습니다. – kevinjansz