Search in sources :

Example 1 with Ace

use of com.zimbra.cs.dav.property.Acl.Ace in project zm-mailbox by Zimbra.

the class MailItemResource method setAce.

public void setAce(DavContext ctxt, List<Ace> aceList) throws ServiceException, DavException {
    ACL acl = new ACL();
    for (Ace ace : aceList) {
        if (ace.getRights() > 0)
            acl.grantAccess(ace.getZimbraId(), ace.getGranteeType(), ace.getRights(), null);
    }
    Mailbox mbox = getMailbox(ctxt);
    mbox.setPermissions(ctxt.getOperationContext(), getId(), acl);
}
Also used : Ace(com.zimbra.cs.dav.property.Acl.Ace) Mailbox(com.zimbra.cs.mailbox.Mailbox) ZMailbox(com.zimbra.client.ZMailbox) ACL(com.zimbra.cs.mailbox.ACL)

Example 2 with Ace

use of com.zimbra.cs.dav.property.Acl.Ace in project zm-mailbox by Zimbra.

the class MailItemResource method getAce.

public List<Ace> getAce(DavContext ctxt) throws ServiceException, DavException {
    ArrayList<Ace> aces = new ArrayList<Ace>();
    Mailbox mbox = getMailbox(ctxt);
    MailItem item = mbox.getItemById(ctxt.getOperationContext(), mId, MailItem.Type.UNKNOWN);
    Folder f = null;
    if (item.getType() == MailItem.Type.FOLDER)
        f = (Folder) item;
    else
        f = mbox.getFolderById(ctxt.getOperationContext(), item.getParentId());
    ACL effectiveAcl = f.getEffectiveACL();
    if (effectiveAcl == null) {
        return aces;
    }
    List<Grant> grants = effectiveAcl.getGrants();
    if (grants == null) {
        return aces;
    }
    for (ACL.Grant g : grants) {
        if (!g.hasGrantee())
            continue;
        aces.add(new Ace(g.getGranteeId(), g.getGrantedRights(), g.getGranteeType()));
    }
    return aces;
}
Also used : Grant(com.zimbra.cs.mailbox.ACL.Grant) Ace(com.zimbra.cs.dav.property.Acl.Ace) MailItem(com.zimbra.cs.mailbox.MailItem) Mailbox(com.zimbra.cs.mailbox.Mailbox) ZMailbox(com.zimbra.client.ZMailbox) ArrayList(java.util.ArrayList) ACL(com.zimbra.cs.mailbox.ACL) Folder(com.zimbra.cs.mailbox.Folder) Grant(com.zimbra.cs.mailbox.ACL.Grant)

Example 3 with Ace

use of com.zimbra.cs.dav.property.Acl.Ace in project zm-mailbox by Zimbra.

the class Acl method handle.

public void handle(DavContext ctxt) throws DavException, IOException, ServiceException {
    DavResource rs = ctxt.getRequestedResource();
    if (!rs.isCollection() || !(rs instanceof MailItemResource))
        throw new DavException("acl not implemented for non-collection resource", HttpServletResponse.SC_NOT_IMPLEMENTED);
    if (!ctxt.hasRequestMessage())
        throw new DavException("empty request", HttpServletResponse.SC_BAD_REQUEST);
    Document reqMsg = ctxt.getRequestMessage();
    Element acl = reqMsg.getRootElement();
    if (!acl.getQName().equals(DavElements.E_ACL))
        throw new DavException("request does not start with acl element", HttpServletResponse.SC_BAD_REQUEST);
    List<Element> aceElements = acl.elements(DavElements.E_ACE);
    ArrayList<Ace> aceList = new ArrayList<Ace>();
    for (Element ace : aceElements) aceList.add(new Ace(ace));
    MailItemResource mir = (MailItemResource) rs;
    mir.setAce(ctxt, aceList);
}
Also used : Ace(com.zimbra.cs.dav.property.Acl.Ace) DavResource(com.zimbra.cs.dav.resource.DavResource) MailItemResource(com.zimbra.cs.dav.resource.MailItemResource) DavException(com.zimbra.cs.dav.DavException) Element(org.dom4j.Element) ArrayList(java.util.ArrayList) Document(org.dom4j.Document)

Example 4 with Ace

use of com.zimbra.cs.dav.property.Acl.Ace in project zm-mailbox by Zimbra.

the class AclReports method getAclPrincipals.

private ArrayList<DavResource> getAclPrincipals(DavContext ctxt) throws DavException, ServiceException {
    ArrayList<DavResource> ret = new ArrayList<DavResource>();
    DavResource res = ctxt.getRequestedResource();
    if (!(res instanceof MailItemResource))
        return ret;
    List<Ace> aces = ((MailItemResource) res).getAce(ctxt);
    Provisioning prov = Provisioning.getInstance();
    for (Ace ace : aces) {
        if (ace.hasHref()) {
            Account acct = prov.get(Key.AccountBy.id, ace.getZimbraId());
            if (acct != null)
                ret.add(UrlNamespace.getPrincipal(ctxt, acct));
        }
    }
    return ret;
}
Also used : Account(com.zimbra.cs.account.Account) Ace(com.zimbra.cs.dav.property.Acl.Ace) DavResource(com.zimbra.cs.dav.resource.DavResource) MailItemResource(com.zimbra.cs.dav.resource.MailItemResource) ArrayList(java.util.ArrayList) Provisioning(com.zimbra.cs.account.Provisioning)

Aggregations

Ace (com.zimbra.cs.dav.property.Acl.Ace)4 ArrayList (java.util.ArrayList)3 ZMailbox (com.zimbra.client.ZMailbox)2 DavResource (com.zimbra.cs.dav.resource.DavResource)2 MailItemResource (com.zimbra.cs.dav.resource.MailItemResource)2 ACL (com.zimbra.cs.mailbox.ACL)2 Mailbox (com.zimbra.cs.mailbox.Mailbox)2 Account (com.zimbra.cs.account.Account)1 Provisioning (com.zimbra.cs.account.Provisioning)1 DavException (com.zimbra.cs.dav.DavException)1 Grant (com.zimbra.cs.mailbox.ACL.Grant)1 Folder (com.zimbra.cs.mailbox.Folder)1 MailItem (com.zimbra.cs.mailbox.MailItem)1 Document (org.dom4j.Document)1 Element (org.dom4j.Element)1