1/*
2 SPDX-FileCopyrightText: 2008 Nicola Gigante <nicola.gigante@gmail.com>
3 SPDX-FileCopyrightText: 2009-2010 Dario Freddi <drf@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.1-or-later
6*/
7
8#ifndef KAUTH_AUTH_BACKEND_H
9#define KAUTH_AUTH_BACKEND_H
10
11#include <QObject>
12
13#include "action.h"
14#include "kauthcore_export.h"
15
16namespace KAuth
17{
18typedef Action::DetailsMap DetailsMap;
19
20class KAUTHCORE_EXPORT AuthBackend : public QObject
21{
22 Q_OBJECT
23 Q_DISABLE_COPY(AuthBackend)
24
25public:
26 enum Capability {
27 NoCapability = 0,
28 AuthorizeFromClientCapability = 1,
29 AuthorizeFromHelperCapability = 2,
30 PreAuthActionCapability = 4,
31 };
32 Q_DECLARE_FLAGS(Capabilities, Capability)
33
34 AuthBackend();
35 ~AuthBackend() override;
36 virtual void setupAction(const QString &action) = 0;
37 virtual void preAuthAction(const QString &action, QWindow *parent);
38 virtual Action::AuthStatus authorizeAction(const QString &action) = 0;
39 virtual Action::AuthStatus actionStatus(const QString &action) = 0;
40 virtual QByteArray callerID() const = 0;
41 virtual bool isCallerAuthorized(const QString &action, const QByteArray &callerID, const QVariantMap &details) = 0;
42 virtual QVariantMap backendDetails(const DetailsMap &details);
43
44 Capabilities capabilities() const;
45
46protected:
47 void setCapabilities(Capabilities capabilities);
48
49Q_SIGNALS:
50 void actionStatusChanged(const QString &action, KAuth::Action::AuthStatus status);
51
52private:
53 class Private;
54 Private *const d;
55};
56
57Q_DECLARE_OPERATORS_FOR_FLAGS(AuthBackend::Capabilities)
58
59} // namespace Auth
60
61Q_DECLARE_INTERFACE(KAuth::AuthBackend, "org.kde.kf6auth.AuthBackend/0.1")
62
63#endif
64

source code of kauth/src/AuthBackend.h