File indexing completed on 2024-05-12 05:48:10

0001 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0002 // SPDX-FileCopyrightText: 2022 Harald Sitter <sitter@kde.org>
0003 
0004 #include "auth.h"
0005 
0006 #include <QDBusContext>
0007 #include <QDBusMessage>
0008 
0009 #include <polkitqt1-agent-session.h>
0010 #include <polkitqt1-authority.h>
0011 
0012 bool isAuthorized(QDBusContext *context)
0013 {
0014     const auto action = QStringLiteral("org.kde.kio.admin.commands");
0015 
0016     auto authority = PolkitQt1::Authority::instance();
0017     PolkitQt1::Authority::Result result =
0018         authority->checkAuthorizationSync(action, PolkitQt1::SystemBusNameSubject(context->message().service()), PolkitQt1::Authority::AllowUserInteraction);
0019 
0020     if (authority->hasError()) {
0021         authority->clearError();
0022         return false;
0023     }
0024 
0025     switch (result) {
0026     case PolkitQt1::Authority::Yes:
0027         return true;
0028     case PolkitQt1::Authority::Unknown:
0029     case PolkitQt1::Authority::No:
0030     case PolkitQt1::Authority::Challenge:
0031         break;
0032     }
0033     return false;
0034 }