24#include "private/authorizationmanager_p.h"
25#include "private/authorizationrule_p.h"
27#include <QtCore/QObject>
28#include <QtCore/QTimer>
31#include <klocalizedstring.h>
36AuthorizationRulePrivate::AuthorizationRulePrivate(
const QString &serviceName,
const QString &credentialID,
37 AuthorizationRule *rule)
39 serviceName(serviceName),
40 credentialID(credentialID),
41 policy(AuthorizationRule::Deny),
42 targets(AuthorizationRule::Default),
43 persistence(AuthorizationRule::Transient)
47AuthorizationRulePrivate::~AuthorizationRulePrivate()
51bool AuthorizationRulePrivate::matches(
const QString &name,
const QString &
id)
const
53 if (serviceName == name && (credentialID ==
id)) {
57 if (targets.testFlag(AuthorizationRule::AllUsers) && (serviceName == name)) {
61 if (targets.testFlag(AuthorizationRule::AllServices) && (credentialID ==
id)) {
68void AuthorizationRulePrivate::scheduleChangedSignal()
70 QTimer::singleShot(0, q, SLOT(fireChangedSignal()));
73void AuthorizationRulePrivate::fireChangedSignal()
75 if ((persistence == AuthorizationRule::Persistent) &&
76 (policy != AuthorizationRule::PinRequired)) {
77 AuthorizationManager::self()->d->saveRules();
83AuthorizationRule::AuthorizationRule(
const QString &serviceName,
const QString &credentialID)
84 :
QObject(AuthorizationManager::self()),
85 d(new AuthorizationRulePrivate(serviceName, credentialID, this))
89AuthorizationRule::~AuthorizationRule()
94QString AuthorizationRule::description()
const
97 if (d->targets.testFlag(AllUsers) && d->policy == Allow) {
98 return i18n(
"Allow everybody access to %1.", d->serviceName);
99 }
else if (d->targets.testFlag(AllUsers) && d->policy == Deny) {
100 return i18n(
"Deny everybody access to %1", d->serviceName);
101 }
else if (d->targets.testFlag(AllServices) && d->policy == Allow) {
102 return i18n(
"Allow %1 access to all services.", credentials().name());
103 }
else if (d->targets.testFlag(AllServices) && d->policy == Deny) {
104 return i18n(
"Deny %1 access to all services.", credentials().name());
105 }
else if (d->policy == Allow) {
106 return i18n(
"Allow access to %1, by %2.", d->serviceName, credentials().name());
107 }
else if (d->policy == Deny) {
108 return i18n(
"Deny access to %1, by %2.", d->serviceName, credentials().name());
110 return i18n(
"Allow access to %1, by %2?", d->serviceName, credentials().name());
115void AuthorizationRule::setPolicy(
Policy policy)
118 d->scheduleChangedSignal();
126void AuthorizationRule::setTargets(Targets targets)
128 d->targets = targets;
129 d->scheduleChangedSignal();
132AuthorizationRule::Targets AuthorizationRule::targets()
139 d->persistence = persistence;
140 d->scheduleChangedSignal();
145 return d->persistence;
148void AuthorizationRule::setPin(
const QString &pin)
151 d->scheduleChangedSignal();
154QString AuthorizationRule::pin()
const
161 return AuthorizationManager::self()->d->getCredentials(d->credentialID);
164QString AuthorizationRule::serviceName()
const
166 return d->serviceName;
171#include "authorizationrule.moc"
This class encapsules someone's identity.
Namespace for everything in libplasma.