From bf15c3977c27536e47578e8b0ecaedb852c5ff52 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 24 Jan 2018 11:25:46 +0100 Subject: Fixed initial account login. Because we ended up trying to load the resources before they even existed (directly after the account was created), we ended up creating a second set of unconfigured resources. Storing the password by modifying the resource was an artifact of the past anyways, and a login function results in a cleaner system and fixes the problem at hand. --- framework/src/domain/settings/accountsettings.cpp | 25 ++++++++++++----------- framework/src/domain/settings/accountsettings.h | 7 +------ 2 files changed, 14 insertions(+), 18 deletions(-) (limited to 'framework/src') diff --git a/framework/src/domain/settings/accountsettings.cpp b/framework/src/domain/settings/accountsettings.cpp index acf85522..a75d5e07 100644 --- a/framework/src/domain/settings/accountsettings.cpp +++ b/framework/src/domain/settings/accountsettings.cpp @@ -56,13 +56,10 @@ void AccountSettings::setAccountIdentifier(const QByteArray &id) mName = QString(); mImapServer = QString(); mImapUsername = QString(); - mImapPassword = QString(); mSmtpServer = QString(); mSmtpUsername = QString(); - mSmtpPassword = QString(); mCardDavServer = QString(); mCardDavUsername = QString(); - mCardDavPassword = QString(); mPath = QString(); emit changed(); emit imapResourceChanged(); @@ -292,9 +289,6 @@ void AccountSettings::saveImapResource() {"server", mImapServer}, {"username", mImapUsername} }); - if (!mImapPassword.isEmpty()) { - Kube::AccountKeyring{mAccountIdentifier}.storePassword(mImapIdentifier, mImapPassword); - } } void AccountSettings::saveCardDavResource() @@ -303,9 +297,6 @@ void AccountSettings::saveCardDavResource() {"server", mCardDavServer}, {"username", mCardDavUsername} }); - if (!mCardDavPassword.isEmpty()) { - Kube::AccountKeyring{mAccountIdentifier}.storePassword(mCardDavIdentifier, mCardDavPassword); - } } void AccountSettings::saveMaildirResource() @@ -321,9 +312,19 @@ void AccountSettings::saveMailtransportResource() {"server", mSmtpServer}, {"username", mSmtpUsername} }); - if (!mSmtpPassword.isEmpty()) { - Kube::AccountKeyring{mAccountIdentifier}.storePassword(mMailtransportIdentifier, mSmtpPassword); - } +} + +void AccountSettings::login(const QVariantMap &secrets) +{ + auto accountSecret = secrets.value("accountSecret").toString(); + Store::fetchAll(Query().filter(mAccountIdentifier)) + .then([=](const QList &resources) { + for (const auto &resource : resources) { + Kube::AccountKeyring{mAccountIdentifier}.storePassword(resource->identifier(), accountSecret); + } + }).onError([](const KAsync::Error &error) { + qWarning() << "Failed to load any account resources resource: " << error; + }).exec(); } void AccountSettings::saveIdentity() diff --git a/framework/src/domain/settings/accountsettings.h b/framework/src/domain/settings/accountsettings.h index 79fc5f72..7134539a 100644 --- a/framework/src/domain/settings/accountsettings.h +++ b/framework/src/domain/settings/accountsettings.h @@ -35,16 +35,13 @@ class AccountSettings : public QObject Q_PROPERTY(QString imapServer MEMBER mImapServer NOTIFY imapResourceChanged) Q_PROPERTY(QValidator* imapServerValidator READ imapServerValidator CONSTANT) Q_PROPERTY(QString imapUsername MEMBER mImapUsername NOTIFY imapResourceChanged) - Q_PROPERTY(QString imapPassword MEMBER mImapPassword NOTIFY imapResourceChanged) Q_PROPERTY(QString smtpServer MEMBER mSmtpServer NOTIFY smtpResourceChanged) Q_PROPERTY(QValidator* smtpServerValidator READ smtpServerValidator CONSTANT) Q_PROPERTY(QString smtpUsername MEMBER mSmtpUsername NOTIFY smtpResourceChanged) - Q_PROPERTY(QString smtpPassword MEMBER mSmtpPassword NOTIFY smtpResourceChanged) Q_PROPERTY(QString carddavServer MEMBER mCardDavServer NOTIFY cardDavResourceChanged) Q_PROPERTY(QString carddavUsername MEMBER mCardDavUsername NOTIFY cardDavResourceChanged) - Q_PROPERTY(QString carddavPassword MEMBER mCardDavPassword NOTIFY cardDavResourceChanged) Q_PROPERTY(QUrl path READ path WRITE setPath NOTIFY pathChanged) Q_PROPERTY(QValidator* pathValidator READ pathValidator CONSTANT) @@ -68,6 +65,7 @@ public: Q_INVOKABLE virtual void load() = 0; Q_INVOKABLE virtual void save() = 0; Q_INVOKABLE virtual void remove() = 0; + Q_INVOKABLE void login(const QVariantMap &secrets); signals: void imapResourceChanged(); @@ -105,7 +103,6 @@ protected: QByteArray mImapIdentifier; QString mImapServer; QString mImapUsername; - QString mImapPassword; QByteArray mMaildirIdentifier; QString mPath; @@ -113,7 +110,6 @@ protected: QByteArray mMailtransportIdentifier; QString mSmtpServer; QString mSmtpUsername; - QString mSmtpPassword; QByteArray mIdentityIdentifier; QString mUsername; @@ -122,6 +118,5 @@ protected: QByteArray mCardDavIdentifier; QString mCardDavServer; QString mCardDavUsername; - QString mCardDavPassword; }; -- cgit v1.2.3