diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2012-06-25 23:43:13 (GMT) |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2012-06-25 23:43:13 (GMT) |
commit | e21e62c14f5aae99d46643065fcb86e2e3abe230 (patch) | |
tree | 71d79d2de0b0f82f8b0a6ca3b8b09308d198ed33 /kimap/listrightsjob.h | |
parent | 172803b38237e38a494aca62fffda918e5799d20 (diff) | |
download | libcalendaring-e21e62c14f5aae99d46643065fcb86e2e3abe230.tar.gz |
initial import of kimap from
commit b54a325116b194da090f900c9a538710759eb303
Author: Stephen Kelly <steveire@gmail.com>
Date: Sun May 6 20:44:53 2012 +0200
Revert "Port to const QRegExp API."
This reverts commit 0ca0dfc7e0ca8095efd0b060d1d5e26ac9ceb379.
The qtbase commit requiring this was reverted.
Diffstat (limited to 'kimap/listrightsjob.h')
-rw-r--r-- | kimap/listrightsjob.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/kimap/listrightsjob.h b/kimap/listrightsjob.h new file mode 100644 index 0000000..ed4850d --- /dev/null +++ b/kimap/listrightsjob.h @@ -0,0 +1,122 @@ +/* + Copyright (c) 2009 Andras Mantia <amantia@kde.org> + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ + +#ifndef KIMAP_LISTRIGHTSJOB_H +#define KIMAP_LISTRIGHTSJOB_H + +#include "kimap_export.h" + +#include "acljobbase.h" + +namespace KIMAP { + +class Session; +struct Message; +class ListRightsJobPrivate; + + +/** + * Lists the possible and automatic rights for + * an identifier on a mailbox + * + * This job can only be run when the session is in the + * authenticated (or selected) state. + * + * The user must have the Acl::Admin permission + * on the mailbox for this job to succeed (see + * MyRightsJob). + * + * This job requires that the server supports the ACL + * capability, defined in + * <a href="http://www.apps.ietf.org/rfc/rfc4314.html">RFC 4314</a>. + */ +class KIMAP_EXPORT ListRightsJob : public AclJobBase +{ + Q_OBJECT + Q_DECLARE_PRIVATE(ListRightsJob) + + friend class SessionPrivate; + + public: + explicit ListRightsJob( Session *session ); + virtual ~ListRightsJob(); + + /** + * Sets the identifier that should be looked up + * + * The meaning of identifiers depends on the server implementation, + * with the following restrictions: + * + * - "anyone" means any authenticated user, including anonymous + * - an identifier starting with a minus sign ('-') indicates + * "negative rights": rights that should be taken away from + * matching users + * + * Other than the above restrictions, ACL identifiers are usually + * IMAP usernames, but could potentially be group names as well. + * + * Note that negative rights override positive rights: if + * "fred" and "-fred" are both assigned the 'w' right, the + * user "fred" will not have the 'w' right. + * + * @param identifier the identifier to list the rights for + */ + void setIdentifier( const QByteArray &identifier ); + /** + * The identifier that will be looked up + */ + QByteArray identifier(); + + /** + * The rights that will always be assigned to the identifier, + * regardless of the access control list. + * + * For example, under the UNIX permission model, the owner + * of a mailbox will always have the Acl::Admin right. + */ + Acl::Rights defaultRights(); + + /** + * The rights it is possible to assign to the identifier. + * + * The rights are grouped by those that are tied together. + * For each set of rights in the returned list, either all + * or none of those rights may be set, but not only some of + * them. + * + * For example, under the UNIX permission model, the following + * rights are all controlled by the "write" flag, and hence + * must either all be set or all be not set: + * - Acl::KeepSeen + * - Acl::Write + * - Acl::Insert + * - Acl::DeleteMessage + * - Acl::Expunge + */ + QList<Acl::Rights> possibleRights(); + + protected: + virtual void doStart(); + virtual void handleResponse(const Message &response); + +}; + +} + +#endif |