Search in sources :

Example 6 with Privilege

use of org.apache.jackrabbit.webdav.security.Privilege in project jackrabbit by apache.

the class RepositoryServiceImpl method fillSupportedPrivilegeMap.

private static void fillSupportedPrivilegeMap(List<SupportedPrivilege> sps, Map<Name, SupportedPrivilege> spMap, NameFactory nameFactory) throws NamespaceException, IllegalNameException {
    for (SupportedPrivilege sp : sps) {
        Privilege p = sp.getPrivilege();
        Name privName = nameFactory.create(p.getNamespace().getURI(), p.getName());
        spMap.put(privName, sp);
        List<SupportedPrivilege> agg = Arrays.asList(sp.getSupportedPrivileges());
        if (!agg.isEmpty()) {
            fillSupportedPrivilegeMap(agg, spMap, nameFactory);
        }
    }
}
Also used : SupportedPrivilege(org.apache.jackrabbit.webdav.security.SupportedPrivilege) SupportedPrivilege(org.apache.jackrabbit.webdav.security.SupportedPrivilege) Privilege(org.apache.jackrabbit.webdav.security.Privilege) DavPropertyName(org.apache.jackrabbit.webdav.property.DavPropertyName) Name(org.apache.jackrabbit.spi.Name)

Example 7 with Privilege

use of org.apache.jackrabbit.webdav.security.Privilege in project jackrabbit by apache.

the class RepositoryServiceImpl method getPrivilegeNames.

@Override
public Name[] getPrivilegeNames(SessionInfo sessionInfo, NodeId nodeId) throws RepositoryException {
    String uri = (nodeId == null) ? uriResolver.getWorkspaceUri(sessionInfo.getWorkspaceName()) : getItemUri(nodeId, sessionInfo);
    DavPropertyNameSet nameSet = new DavPropertyNameSet();
    nameSet.add(SecurityConstants.CURRENT_USER_PRIVILEGE_SET);
    HttpPropfind propfindRequest = null;
    try {
        propfindRequest = new HttpPropfind(uri, nameSet, DEPTH_0);
        HttpResponse response = execute(propfindRequest, sessionInfo);
        propfindRequest.checkSuccess(response);
        MultiStatusResponse[] mresponses = propfindRequest.getResponseBodyAsMultiStatus(response).getResponses();
        if (mresponses.length < 1) {
            throw new PathNotFoundException("Unable to retrieve privileges definitions.");
        }
        DavPropertyName displayName = SecurityConstants.CURRENT_USER_PRIVILEGE_SET;
        DavProperty<?> p = mresponses[0].getProperties(DavServletResponse.SC_OK).get(displayName);
        if (p == null) {
            return new Name[0];
        } else {
            Collection<Privilege> privs = new CurrentUserPrivilegeSetProperty(p).getValue();
            Set<Name> privNames = new HashSet<Name>(privs.size());
            for (Privilege priv : privs) {
                privNames.add(nameFactory.create(priv.getNamespace().getURI(), priv.getName()));
            }
            return privNames.toArray(new Name[privNames.size()]);
        }
    } catch (IOException e) {
        throw new RepositoryException(e);
    } catch (DavException e) {
        throw ExceptionConverter.generate(e);
    } finally {
        if (propfindRequest != null) {
            propfindRequest.releaseConnection();
        }
    }
}
Also used : DavException(org.apache.jackrabbit.webdav.DavException) MultiStatusResponse(org.apache.jackrabbit.webdav.MultiStatusResponse) HttpResponse(org.apache.http.HttpResponse) RepositoryException(javax.jcr.RepositoryException) IOException(java.io.IOException) DavPropertyName(org.apache.jackrabbit.webdav.property.DavPropertyName) DavPropertyName(org.apache.jackrabbit.webdav.property.DavPropertyName) Name(org.apache.jackrabbit.spi.Name) HttpPropfind(org.apache.jackrabbit.webdav.client.methods.HttpPropfind) CurrentUserPrivilegeSetProperty(org.apache.jackrabbit.webdav.security.CurrentUserPrivilegeSetProperty) DavPropertyNameSet(org.apache.jackrabbit.webdav.property.DavPropertyNameSet) PathNotFoundException(javax.jcr.PathNotFoundException) SupportedPrivilege(org.apache.jackrabbit.webdav.security.SupportedPrivilege) Privilege(org.apache.jackrabbit.webdav.security.Privilege) HashSet(java.util.HashSet)

Aggregations

Privilege (org.apache.jackrabbit.webdav.security.Privilege)7 CurrentUserPrivilegeSetProperty (org.apache.jackrabbit.webdav.security.CurrentUserPrivilegeSetProperty)4 HashSet (java.util.HashSet)3 RepositoryException (javax.jcr.RepositoryException)3 MultiStatusResponse (org.apache.jackrabbit.webdav.MultiStatusResponse)3 SupportedPrivilege (org.apache.jackrabbit.webdav.security.SupportedPrivilege)3 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 HttpResponse (org.apache.http.HttpResponse)2 Name (org.apache.jackrabbit.spi.Name)2 DavException (org.apache.jackrabbit.webdav.DavException)2 DavPropertyName (org.apache.jackrabbit.webdav.property.DavPropertyName)2 Namespace (org.apache.jackrabbit.webdav.xml.Namespace)2 ItemNotFoundException (javax.jcr.ItemNotFoundException)1 PathNotFoundException (javax.jcr.PathNotFoundException)1 Session (javax.jcr.Session)1 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)1 HttpPropfind (org.apache.jackrabbit.webdav.client.methods.HttpPropfind)1 HttpReport (org.apache.jackrabbit.webdav.client.methods.HttpReport)1 DavPropertyNameSet (org.apache.jackrabbit.webdav.property.DavPropertyNameSet)1