You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.0 KiB
61 lines
2.0 KiB
/* |
|
SPDX-FileCopyrightText: 2017 Albert Astals Cid <aacid@kde.org> |
|
|
|
SPDX-License-Identifier: LGPL-2.0-or-later |
|
*/ |
|
|
|
#include "kmsieveimappasswordprovider.h" |
|
#include "kmail_debug.h" |
|
using namespace QKeychain; |
|
KMSieveImapPasswordProvider::KMSieveImapPasswordProvider(QObject *parent) |
|
: KSieveUi::SieveImapPasswordProvider(parent) |
|
{ |
|
} |
|
|
|
KMSieveImapPasswordProvider::~KMSieveImapPasswordProvider() |
|
{ |
|
|
|
} |
|
|
|
void KMSieveImapPasswordProvider::passwords(const QString &identifier) |
|
{ |
|
mIdentifier = identifier; |
|
|
|
auto readJob = new ReadPasswordJob(QStringLiteral("imap"), this); |
|
connect(readJob, &Job::finished, this, &KMSieveImapPasswordProvider::readSieveServerPasswordFinished); |
|
readJob->setKey(mIdentifier + QStringLiteral("rc")); |
|
readJob->start(); |
|
} |
|
|
|
void KMSieveImapPasswordProvider::readSieveServerPasswordFinished(QKeychain::Job *baseJob) |
|
{ |
|
auto *job = qobject_cast<ReadPasswordJob *>(baseJob); |
|
Q_ASSERT(job); |
|
if (job->error()) { |
|
qCWarning(KMAIL_LOG) << "An error occurred while reading password: " << job->errorString(); |
|
} else { |
|
mSievePassword = job->textData(); |
|
} |
|
|
|
auto readJob = new ReadPasswordJob(QStringLiteral("imap"), this); |
|
connect(readJob, &Job::finished, this, &KMSieveImapPasswordProvider::readSieveServerCustomPasswordFinished); |
|
readJob->setKey(QStringLiteral("custom_sieve_") + mIdentifier + QStringLiteral("rc")); |
|
readJob->start(); |
|
} |
|
|
|
void KMSieveImapPasswordProvider::readSieveServerCustomPasswordFinished(QKeychain::Job *baseJob) |
|
{ |
|
auto *job = qobject_cast<ReadPasswordJob *>(baseJob); |
|
Q_ASSERT(job); |
|
if (job->error()) { |
|
if (job->error() != QKeychain::EntryNotFound) { |
|
qCWarning(KMAIL_LOG) << "An error occurred while reading password: " << job->errorString(); |
|
} |
|
} else { |
|
mSieveCustomPassword = job->textData(); |
|
} |
|
Q_EMIT passwordsRequested(mSievePassword, mSieveCustomPassword); |
|
//Don't store it. |
|
mSievePassword.clear(); |
|
mSieveCustomPassword.clear(); |
|
}
|
|
|