summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2018-01-24 11:25:46 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-01-24 11:25:46 +0100
commitbf15c3977c27536e47578e8b0ecaedb852c5ff52 (patch)
tree55fc317d968fd7688a8961251c37fbdd059fbbfa
parentf0d82e708e435f2d7f6d8e066481286bd023dff9 (diff)
downloadkube-bf15c3977c27536e47578e8b0ecaedb852c5ff52.tar.gz
kube-bf15c3977c27536e47578e8b0ecaedb852c5ff52.zip
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.
-rw-r--r--accounts/gmail/gmailsettings.cpp1
-rw-r--r--accounts/imap/imapsettings.cpp1
-rw-r--r--accounts/imap/qml/Login.qml5
-rw-r--r--accounts/kolabnow/kolabnowsettings.cpp2
-rw-r--r--accounts/kolabnow/qml/Login.qml4
-rw-r--r--framework/src/domain/settings/accountsettings.cpp25
-rw-r--r--framework/src/domain/settings/accountsettings.h7
7 files changed, 16 insertions, 29 deletions
diff --git a/accounts/gmail/gmailsettings.cpp b/accounts/gmail/gmailsettings.cpp
index 681ee1d4..ab050661 100644
--- a/accounts/gmail/gmailsettings.cpp
+++ b/accounts/gmail/gmailsettings.cpp
@@ -38,7 +38,6 @@ void GmailSettings::save()
38 38
39 mSmtpServer = "smtps://smtp.gmail.com:465"; 39 mSmtpServer = "smtps://smtp.gmail.com:465";
40 mSmtpUsername = mEmailAddress; 40 mSmtpUsername = mEmailAddress;
41 mSmtpPassword = mImapPassword;
42 41
43 saveAccount(); 42 saveAccount();
44 saveImapResource(); 43 saveImapResource();
diff --git a/accounts/imap/imapsettings.cpp b/accounts/imap/imapsettings.cpp
index a9749878..1f338e83 100644
--- a/accounts/imap/imapsettings.cpp
+++ b/accounts/imap/imapsettings.cpp
@@ -33,7 +33,6 @@ void ImapSettings::load()
33 33
34void ImapSettings::save() 34void ImapSettings::save()
35{ 35{
36 mSmtpPassword = mImapPassword;
37 saveAccount(); 36 saveAccount();
38 saveImapResource(); 37 saveImapResource();
39 saveMailtransportResource(); 38 saveMailtransportResource();
diff --git a/accounts/imap/qml/Login.qml b/accounts/imap/qml/Login.qml
index 14e13e89..c9304b0e 100644
--- a/accounts/imap/qml/Login.qml
+++ b/accounts/imap/qml/Login.qml
@@ -33,7 +33,7 @@ Item {
33 } 33 }
34 34
35 function login(){ 35 function login(){
36 settings.save() 36 settings.login({accountSecret: pwField.text})
37 } 37 }
38 38
39 GridLayout { 39 GridLayout {
@@ -53,10 +53,7 @@ Item {
53 id: pwField 53 id: pwField
54 Layout.fillWidth: true 54 Layout.fillWidth: true
55 focus: true 55 focus: true
56
57 placeholderText: qsTr("Password of your IMAP account") 56 placeholderText: qsTr("Password of your IMAP account")
58 text: settings.imapPassword
59 onTextChanged: settings.imapPassword = text
60 } 57 }
61 } 58 }
62} 59}
diff --git a/accounts/kolabnow/kolabnowsettings.cpp b/accounts/kolabnow/kolabnowsettings.cpp
index fe4c8c48..03c59ede 100644
--- a/accounts/kolabnow/kolabnowsettings.cpp
+++ b/accounts/kolabnow/kolabnowsettings.cpp
@@ -39,11 +39,9 @@ void KolabnowSettings::save()
39 39
40 mSmtpServer = "smtps://smtp.kolabnow.com:587"; 40 mSmtpServer = "smtps://smtp.kolabnow.com:587";
41 mSmtpUsername = mEmailAddress; 41 mSmtpUsername = mEmailAddress;
42 mSmtpPassword = mImapPassword;
43 42
44 mCardDavServer = "https://apps.kolabnow.com/addressbooks/" + mEmailAddress; 43 mCardDavServer = "https://apps.kolabnow.com/addressbooks/" + mEmailAddress;
45 mCardDavUsername = mEmailAddress; 44 mCardDavUsername = mEmailAddress;
46 mCardDavPassword = mImapPassword;
47 45
48 saveAccount(); 46 saveAccount();
49 saveImapResource(); 47 saveImapResource();
diff --git a/accounts/kolabnow/qml/Login.qml b/accounts/kolabnow/qml/Login.qml
index e416b089..856f8ba4 100644
--- a/accounts/kolabnow/qml/Login.qml
+++ b/accounts/kolabnow/qml/Login.qml
@@ -33,7 +33,7 @@ Item {
33 } 33 }
34 34
35 function login(){ 35 function login(){
36 settings.save() 36 settings.login({accountSecret: pwField.text})
37 } 37 }
38 38
39 GridLayout { 39 GridLayout {
@@ -55,8 +55,6 @@ Item {
55 focus: true 55 focus: true
56 56
57 placeholderText: qsTr("Password of your Kolab Now account") 57 placeholderText: qsTr("Password of your Kolab Now account")
58 text: settings.imapPassword
59 onTextChanged: settings.imapPassword = text
60 } 58 }
61 } 59 }
62} 60}
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)
56 mName = QString(); 56 mName = QString();
57 mImapServer = QString(); 57 mImapServer = QString();
58 mImapUsername = QString(); 58 mImapUsername = QString();
59 mImapPassword = QString();
60 mSmtpServer = QString(); 59 mSmtpServer = QString();
61 mSmtpUsername = QString(); 60 mSmtpUsername = QString();
62 mSmtpPassword = QString();
63 mCardDavServer = QString(); 61 mCardDavServer = QString();
64 mCardDavUsername = QString(); 62 mCardDavUsername = QString();
65 mCardDavPassword = QString();
66 mPath = QString(); 63 mPath = QString();
67 emit changed(); 64 emit changed();
68 emit imapResourceChanged(); 65 emit imapResourceChanged();
@@ -292,9 +289,6 @@ void AccountSettings::saveImapResource()
292 {"server", mImapServer}, 289 {"server", mImapServer},
293 {"username", mImapUsername} 290 {"username", mImapUsername}
294 }); 291 });
295 if (!mImapPassword.isEmpty()) {
296 Kube::AccountKeyring{mAccountIdentifier}.storePassword(mImapIdentifier, mImapPassword);
297 }
298} 292}
299 293
300void AccountSettings::saveCardDavResource() 294void AccountSettings::saveCardDavResource()
@@ -303,9 +297,6 @@ void AccountSettings::saveCardDavResource()
303 {"server", mCardDavServer}, 297 {"server", mCardDavServer},
304 {"username", mCardDavUsername} 298 {"username", mCardDavUsername}
305 }); 299 });
306 if (!mCardDavPassword.isEmpty()) {
307 Kube::AccountKeyring{mAccountIdentifier}.storePassword(mCardDavIdentifier, mCardDavPassword);
308 }
309} 300}
310 301
311void AccountSettings::saveMaildirResource() 302void AccountSettings::saveMaildirResource()
@@ -321,9 +312,19 @@ void AccountSettings::saveMailtransportResource()
321 {"server", mSmtpServer}, 312 {"server", mSmtpServer},
322 {"username", mSmtpUsername} 313 {"username", mSmtpUsername}
323 }); 314 });
324 if (!mSmtpPassword.isEmpty()) { 315}
325 Kube::AccountKeyring{mAccountIdentifier}.storePassword(mMailtransportIdentifier, mSmtpPassword); 316
326 } 317void AccountSettings::login(const QVariantMap &secrets)
318{
319 auto accountSecret = secrets.value("accountSecret").toString();
320 Store::fetchAll<SinkResource>(Query().filter<SinkResource::Account>(mAccountIdentifier))
321 .then([=](const QList<SinkResource::Ptr> &resources) {
322 for (const auto &resource : resources) {
323 Kube::AccountKeyring{mAccountIdentifier}.storePassword(resource->identifier(), accountSecret);
324 }
325 }).onError([](const KAsync::Error &error) {
326 qWarning() << "Failed to load any account resources resource: " << error;
327 }).exec();
327} 328}
328 329
329void AccountSettings::saveIdentity() 330void 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
35 Q_PROPERTY(QString imapServer MEMBER mImapServer NOTIFY imapResourceChanged) 35 Q_PROPERTY(QString imapServer MEMBER mImapServer NOTIFY imapResourceChanged)
36 Q_PROPERTY(QValidator* imapServerValidator READ imapServerValidator CONSTANT) 36 Q_PROPERTY(QValidator* imapServerValidator READ imapServerValidator CONSTANT)
37 Q_PROPERTY(QString imapUsername MEMBER mImapUsername NOTIFY imapResourceChanged) 37 Q_PROPERTY(QString imapUsername MEMBER mImapUsername NOTIFY imapResourceChanged)
38 Q_PROPERTY(QString imapPassword MEMBER mImapPassword NOTIFY imapResourceChanged)
39 38
40 Q_PROPERTY(QString smtpServer MEMBER mSmtpServer NOTIFY smtpResourceChanged) 39 Q_PROPERTY(QString smtpServer MEMBER mSmtpServer NOTIFY smtpResourceChanged)
41 Q_PROPERTY(QValidator* smtpServerValidator READ smtpServerValidator CONSTANT) 40 Q_PROPERTY(QValidator* smtpServerValidator READ smtpServerValidator CONSTANT)
42 Q_PROPERTY(QString smtpUsername MEMBER mSmtpUsername NOTIFY smtpResourceChanged) 41 Q_PROPERTY(QString smtpUsername MEMBER mSmtpUsername NOTIFY smtpResourceChanged)
43 Q_PROPERTY(QString smtpPassword MEMBER mSmtpPassword NOTIFY smtpResourceChanged)
44 42
45 Q_PROPERTY(QString carddavServer MEMBER mCardDavServer NOTIFY cardDavResourceChanged) 43 Q_PROPERTY(QString carddavServer MEMBER mCardDavServer NOTIFY cardDavResourceChanged)
46 Q_PROPERTY(QString carddavUsername MEMBER mCardDavUsername NOTIFY cardDavResourceChanged) 44 Q_PROPERTY(QString carddavUsername MEMBER mCardDavUsername NOTIFY cardDavResourceChanged)
47 Q_PROPERTY(QString carddavPassword MEMBER mCardDavPassword NOTIFY cardDavResourceChanged)
48 45
49 Q_PROPERTY(QUrl path READ path WRITE setPath NOTIFY pathChanged) 46 Q_PROPERTY(QUrl path READ path WRITE setPath NOTIFY pathChanged)
50 Q_PROPERTY(QValidator* pathValidator READ pathValidator CONSTANT) 47 Q_PROPERTY(QValidator* pathValidator READ pathValidator CONSTANT)
@@ -68,6 +65,7 @@ public:
68 Q_INVOKABLE virtual void load() = 0; 65 Q_INVOKABLE virtual void load() = 0;
69 Q_INVOKABLE virtual void save() = 0; 66 Q_INVOKABLE virtual void save() = 0;
70 Q_INVOKABLE virtual void remove() = 0; 67 Q_INVOKABLE virtual void remove() = 0;
68 Q_INVOKABLE void login(const QVariantMap &secrets);
71 69
72signals: 70signals:
73 void imapResourceChanged(); 71 void imapResourceChanged();
@@ -105,7 +103,6 @@ protected:
105 QByteArray mImapIdentifier; 103 QByteArray mImapIdentifier;
106 QString mImapServer; 104 QString mImapServer;
107 QString mImapUsername; 105 QString mImapUsername;
108 QString mImapPassword;
109 106
110 QByteArray mMaildirIdentifier; 107 QByteArray mMaildirIdentifier;
111 QString mPath; 108 QString mPath;
@@ -113,7 +110,6 @@ protected:
113 QByteArray mMailtransportIdentifier; 110 QByteArray mMailtransportIdentifier;
114 QString mSmtpServer; 111 QString mSmtpServer;
115 QString mSmtpUsername; 112 QString mSmtpUsername;
116 QString mSmtpPassword;
117 113
118 QByteArray mIdentityIdentifier; 114 QByteArray mIdentityIdentifier;
119 QString mUsername; 115 QString mUsername;
@@ -122,6 +118,5 @@ protected:
122 QByteArray mCardDavIdentifier; 118 QByteArray mCardDavIdentifier;
123 QString mCardDavServer; 119 QString mCardDavServer;
124 QString mCardDavUsername; 120 QString mCardDavUsername;
125 QString mCardDavPassword;
126}; 121};
127 122