diff --git a/src/backends/polkit-1/Polkit1Backend.h b/src/backends/polkit-1/Polkit1Backend.h --- a/src/backends/polkit-1/Polkit1Backend.h +++ b/src/backends/polkit-1/Polkit1Backend.h @@ -52,6 +52,7 @@ ExtraCallerIDVerificationMethod extraCallerIDVerificationMethod() const Q_DECL_OVERRIDE; bool isCallerAuthorized(const QString &action, QByteArray callerID) Q_DECL_OVERRIDE; bool actionExists(const QString &action) Q_DECL_OVERRIDE; + bool revokeTemporaryAuthorization(const QString &action) Q_DECL_OVERRIDE; private Q_SLOTS: void checkForResultChanged(); diff --git a/src/backends/polkit-1/Polkit1Backend.cpp b/src/backends/polkit-1/Polkit1Backend.cpp --- a/src/backends/polkit-1/Polkit1Backend.cpp +++ b/src/backends/polkit-1/Polkit1Backend.cpp @@ -164,6 +164,20 @@ } } +bool Polkit1Backend::revokeTemporaryAuthorization(const QString &action) +{ + + PolkitQt1::UnixSessionSubject subject(getpid()); + auto authority = PolkitQt1::Authority::instance(); + auto authList = authority->enumerateTemporaryAuthorizationsSync(subject); + foreach (auto a, authList) { + if (a.actionId() == action) { + return authority->revokeTemporaryAuthorizationSync(a.id()); + } + } + return false; +} + QByteArray Polkit1Backend::callerID() const { return QDBusConnection::systemBus().baseService().toUtf8();