Search in sources :

Example 26 with PrivilegeDefinition

use of org.apache.jackrabbit.spi.PrivilegeDefinition in project jackrabbit by apache.

the class PrivilegeRegistryTest method testJcrAll.

public void testJcrAll() throws RepositoryException {
    PrivilegeDefinition p = privilegeRegistry.get(NameConstants.JCR_ALL);
    assertEquals(p.getName(), NameConstants.JCR_ALL);
    assertFalse(p.getDeclaredAggregateNames().isEmpty());
    assertFalse(p.isAbstract());
    Set<Name> l = new HashSet<Name>(p.getDeclaredAggregateNames());
    assertTrue(l.remove(NameConstants.JCR_READ));
    assertTrue(l.remove(NameConstants.JCR_WRITE));
    assertTrue(l.remove(resolver.getQName(PrivilegeRegistry.REP_WRITE)));
    assertTrue(l.remove(NameConstants.JCR_READ_ACCESS_CONTROL));
    assertTrue(l.remove(NameConstants.JCR_MODIFY_ACCESS_CONTROL));
    assertTrue(l.remove(NameConstants.JCR_LIFECYCLE_MANAGEMENT));
    assertTrue(l.remove(NameConstants.JCR_LOCK_MANAGEMENT));
    assertTrue(l.remove(NameConstants.JCR_NODE_TYPE_MANAGEMENT));
    assertTrue(l.remove(NameConstants.JCR_RETENTION_MANAGEMENT));
    assertTrue(l.remove(NameConstants.JCR_VERSION_MANAGEMENT));
    // including repo-level operation privileges
    assertTrue(l.remove(NameConstants.JCR_NAMESPACE_MANAGEMENT));
    assertTrue(l.remove(NameConstants.JCR_NODE_TYPE_DEFINITION_MANAGEMENT));
    assertTrue(l.remove(NameConstants.JCR_WORKSPACE_MANAGEMENT));
    assertTrue(l.remove(resolver.getQName(PrivilegeRegistry.REP_PRIVILEGE_MANAGEMENT)));
    assertTrue(l.isEmpty());
}
Also used : PrivilegeDefinition(org.apache.jackrabbit.spi.PrivilegeDefinition) HashSet(java.util.HashSet) Name(org.apache.jackrabbit.spi.Name)

Example 27 with PrivilegeDefinition

use of org.apache.jackrabbit.spi.PrivilegeDefinition in project jackrabbit by apache.

the class PrivilegeRegistryTest method testAggregates.

public void testAggregates() throws RepositoryException {
    for (PrivilegeDefinition def : privilegeRegistry.getAll()) {
        if (def.getDeclaredAggregateNames().isEmpty()) {
            // ignore non aggregate
            continue;
        }
        for (Name n : def.getDeclaredAggregateNames()) {
            PrivilegeDefinition d = privilegeRegistry.get(n);
            assertNotNull(d);
            Name[] names = privilegeRegistry.getNames(privilegeRegistry.getBits(d));
            assertNotNull(names);
            assertEquals(1, names.length);
            assertEquals(d.getName(), names[0]);
        }
    }
}
Also used : PrivilegeDefinition(org.apache.jackrabbit.spi.PrivilegeDefinition) Name(org.apache.jackrabbit.spi.Name)

Example 28 with PrivilegeDefinition

use of org.apache.jackrabbit.spi.PrivilegeDefinition in project jackrabbit by apache.

the class AccessControlProviderImpl method getSupportedPrivileges.

@Override
public Map<String, Privilege> getSupportedPrivileges(SessionInfo sessionInfo, NodeId nodeId, NamePathResolver npResolver) throws RepositoryException {
    PrivilegeDefinition[] pDefs = service.getSupportedPrivileges(sessionInfo, nodeId);
    Map<String, Privilege> privilegeMap = new HashMap<String, Privilege>(pDefs.length);
    for (PrivilegeDefinition def : pDefs) {
        Privilege p = new PrivilegeImpl(def, pDefs, npResolver);
        privilegeMap.put(p.getName(), p);
    }
    return privilegeMap;
}
Also used : PrivilegeImpl(org.apache.jackrabbit.jcr2spi.security.authorization.PrivilegeImpl) HashMap(java.util.HashMap) PrivilegeDefinition(org.apache.jackrabbit.spi.PrivilegeDefinition) Privilege(javax.jcr.security.Privilege)

Example 29 with PrivilegeDefinition

use of org.apache.jackrabbit.spi.PrivilegeDefinition in project jackrabbit by apache.

the class PrivilegeXmlHandler method writeDefinitions.

private void writeDefinitions(Result result, PrivilegeDefinition[] definitions, Map<String, String> namespaces) throws IOException {
    try {
        Map<String, String> uriToPrefix = new HashMap<String, String>(namespaces.size());
        DocumentBuilder builder = createDocumentBuilder();
        Document doc = builder.newDocument();
        doc.appendChild(doc.createComment(LICENSE_HEADER));
        Element privileges = (Element) doc.appendChild(doc.createElement(XML_PRIVILEGES));
        for (String prefix : namespaces.keySet()) {
            String uri = namespaces.get(prefix);
            privileges.setAttribute(ATTR_XMLNS + prefix, uri);
            uriToPrefix.put(uri, prefix);
        }
        for (PrivilegeDefinition def : definitions) {
            Element priv = (Element) privileges.appendChild(doc.createElement(XML_PRIVILEGE));
            priv.setAttribute(ATTR_NAME, getQualifiedName(def.getName(), uriToPrefix));
            priv.setAttribute(ATTR_ABSTRACT, Boolean.valueOf(def.isAbstract()).toString());
            for (Name aggrName : def.getDeclaredAggregateNames()) {
                Element contains = (Element) priv.appendChild(doc.createElement(XML_CONTAINS));
                contains.setAttribute(ATTR_NAME, getQualifiedName(aggrName, uriToPrefix));
            }
        }
        Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.STANDALONE, "no");
        transformer.transform(new DOMSource(doc), result);
    } catch (Exception e) {
        IOException io = new IOException(e.getMessage());
        io.initCause(e);
        throw io;
    }
}
Also used : DOMSource(javax.xml.transform.dom.DOMSource) Transformer(javax.xml.transform.Transformer) HashMap(java.util.HashMap) DocumentBuilder(javax.xml.parsers.DocumentBuilder) Element(org.w3c.dom.Element) PrivilegeDefinition(org.apache.jackrabbit.spi.PrivilegeDefinition) IOException(java.io.IOException) Document(org.w3c.dom.Document) IOException(java.io.IOException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) SAXException(org.xml.sax.SAXException) Name(org.apache.jackrabbit.spi.Name)

Example 30 with PrivilegeDefinition

use of org.apache.jackrabbit.spi.PrivilegeDefinition in project jackrabbit by apache.

the class RepositoryServiceImpl method getPrivilegeDefinitions.

@Override
public PrivilegeDefinition[] getPrivilegeDefinitions(SessionInfo sessionInfo) throws RepositoryException {
    SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
    Session session = sInfo.getSession();
    Workspace wsp = session.getWorkspace();
    Collection<Privilege> privs;
    if (wsp instanceof JackrabbitWorkspace) {
        privs = Arrays.asList(((JackrabbitWorkspace) wsp).getPrivilegeManager().getRegisteredPrivileges());
    } else {
        Privilege jcrAll = session.getAccessControlManager().privilegeFromName(Privilege.JCR_ALL);
        privs = new HashSet<Privilege>();
        privs.add(jcrAll);
        for (Privilege p : jcrAll.getAggregatePrivileges()) {
            privs.add(p);
        }
    }
    PrivilegeDefinition[] pDefs = new PrivilegeDefinition[privs.size()];
    NamePathResolver npResolver = sInfo.getNamePathResolver();
    int i = 0;
    for (Privilege p : privs) {
        Set<Name> aggrnames = null;
        if (p.isAggregate()) {
            aggrnames = new HashSet<Name>();
            for (Privilege dap : p.getDeclaredAggregatePrivileges()) {
                aggrnames.add(npResolver.getQName(dap.getName()));
            }
        }
        PrivilegeDefinition def = new PrivilegeDefinitionImpl(npResolver.getQName(p.getName()), p.isAbstract(), aggrnames);
        pDefs[i++] = def;
    }
    return pDefs;
}
Also used : NamePathResolver(org.apache.jackrabbit.spi.commons.conversion.NamePathResolver) DefaultNamePathResolver(org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver) PrivilegeDefinition(org.apache.jackrabbit.spi.PrivilegeDefinition) JackrabbitWorkspace(org.apache.jackrabbit.api.JackrabbitWorkspace) Name(org.apache.jackrabbit.spi.Name) PrivilegeDefinitionImpl(org.apache.jackrabbit.spi.commons.privilege.PrivilegeDefinitionImpl) Privilege(javax.jcr.security.Privilege) Session(javax.jcr.Session) JackrabbitWorkspace(org.apache.jackrabbit.api.JackrabbitWorkspace) Workspace(javax.jcr.Workspace)

Aggregations

PrivilegeDefinition (org.apache.jackrabbit.spi.PrivilegeDefinition)30 Name (org.apache.jackrabbit.spi.Name)20 HashMap (java.util.HashMap)11 HashSet (java.util.HashSet)7 PrivilegeDefinitionImpl (org.apache.jackrabbit.spi.commons.privilege.PrivilegeDefinitionImpl)7 RepositoryException (javax.jcr.RepositoryException)5 IOException (java.io.IOException)4 ArrayList (java.util.ArrayList)4 LinkedHashMap (java.util.LinkedHashMap)4 Privilege (javax.jcr.security.Privilege)4 StringReader (java.io.StringReader)3 InputStream (java.io.InputStream)2 OutputStream (java.io.OutputStream)2 DocumentBuilder (javax.xml.parsers.DocumentBuilder)2 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)2 FileSystem (org.apache.jackrabbit.core.fs.FileSystem)2 FileSystemResource (org.apache.jackrabbit.core.fs.FileSystemResource)2 NameFactory (org.apache.jackrabbit.spi.NameFactory)2 DefaultNamePathResolver (org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver)2 NamePathResolver (org.apache.jackrabbit.spi.commons.conversion.NamePathResolver)2