Branch data Line data Source code
1 : : // Copyright (C) 2023 The Qt Company Ltd.
2 : : // Copyright (C) 2019 Luxoft Sweden AB
3 : : // Copyright (C) 2018 Pelagicore AG
4 : : // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
5 : :
6 : : #ifndef DBUSPOLICY_H
7 : : #define DBUSPOLICY_H
8 : :
9 : : #include <functional>
10 : :
11 : : #include <QtAppManCommon/global.h>
12 : : #include <QtCore/QVariantMap>
13 : : #include <QtCore/QByteArray>
14 : :
15 : : QT_FORWARD_DECLARE_CLASS(QDBusAbstractAdaptor)
16 : :
17 : : QT_BEGIN_NAMESPACE_AM
18 : :
19 : : class DBusPolicy
20 : : {
21 : : public:
22 : : ~DBusPolicy();
23 : : static DBusPolicy *instance();
24 : : static DBusPolicy *createInstance(const std::function<QStringList(qint64)> &applicationIdsForPid,
25 : : const std::function<QStringList(const QString &)> &capabilitiesForApplicationId);
26 : :
27 : : bool add(const QDBusAbstractAdaptor *dbusAdaptor, const QVariantMap &yamlFragment);
28 : : bool check(const QDBusAbstractAdaptor *dbusAdaptor, const QByteArray &function);
29 : :
30 : : private:
31 : : Q_DISABLE_COPY_MOVE(DBusPolicy)
32 : 52 : DBusPolicy() = default;
33 : : static DBusPolicy *s_instance;
34 : :
35 : : std::function<QStringList(qint64)> m_applicationIdsForPid;
36 : : std::function<QStringList(const QString &)> m_capabilitiesForApplicationId;
37 : :
38 : : struct DBusPolicyEntry
39 : : {
40 : : QList<uint> m_uids;
41 : : QStringList m_executables;
42 : : QStringList m_capabilities;
43 : : };
44 : : QHash<const QDBusAbstractAdaptor *, QMap<QByteArray, DBusPolicyEntry>> m_policies;
45 : : };
46 : :
47 : : QT_END_NAMESPACE_AM
48 : :
49 : :
50 : : #endif // DBUSPOLICY_H
|