File indexing completed on 2024-04-28 03:52:39

0001 /*
0002     SPDX-FileCopyrightText: 2008 Nicola Gigante <nicola.gigante@gmail.com>
0003     SPDX-FileCopyrightText: 2009 Radek Novacek <rnovacek@redhat.com>
0004     SPDX-FileCopyrightText: 2009-2010 Dario Freddi <drf@kde.org>
0005     SPDX-FileCopyrightText: 2023 Kai Uwe Broulik <kde@broulik.de>
0006 
0007     SPDX-License-Identifier: LGPL-2.1-or-later
0008 */
0009 
0010 #ifndef POLKIT1BACKEND_H
0011 #define POLKIT1BACKEND_H
0012 
0013 #include "AuthBackend.h"
0014 
0015 #include <QEventLoop>
0016 #include <QHash>
0017 #include <QStringList>
0018 
0019 #include <PolkitQt1/Authority>
0020 
0021 #include <memory>
0022 
0023 class QByteArray;
0024 
0025 namespace KAuth
0026 {
0027 class Polkit1Backend : public AuthBackend
0028 {
0029     Q_OBJECT
0030     Q_PLUGIN_METADATA(IID "org.kde.Polkit1Backend")
0031     Q_INTERFACES(KAuth::AuthBackend)
0032 
0033 public:
0034     Polkit1Backend();
0035     ~Polkit1Backend() override;
0036     void setupAction(const QString &) override;
0037     void preAuthAction(const QString &action, QWindow *parent) override;
0038     Action::AuthStatus authorizeAction(const QString &) override;
0039     Action::AuthStatus actionStatus(const QString &) override;
0040     QByteArray callerID() const override;
0041     virtual bool isCallerAuthorized(const QString &action, const QByteArray &callerID, const QVariantMap &details) override;
0042     QVariantMap backendDetails(const DetailsMap &details) override;
0043 
0044 private Q_SLOTS:
0045     void checkForResultChanged();
0046 
0047 private:
0048     void sendWindowHandle(const QString &action, const QString &handle);
0049     void sendActivationToken(const QString &action, QWindow *window);
0050 
0051     QHash<QString, Action::AuthStatus> m_cachedResults;
0052 };
0053 
0054 } // namespace Auth
0055 
0056 #endif