summaryrefslogtreecommitdiffstats
path: root/framework/src
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-09-21 17:30:25 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-09-22 10:26:27 +0200
commit1b1e83aeb820df85ce7f10e81fe1f44deab2174e (patch)
tree8a137d8f286a3595d9171c24b45655c4b2b03427 /framework/src
parent777cb40dae338e79e8f4160882b7c37900b42238 (diff)
downloadkube-1b1e83aeb820df85ce7f10e81fe1f44deab2174e.tar.gz
kube-1b1e83aeb820df85ce7f10e81fe1f44deab2174e.zip
A login view
Diffstat (limited to 'framework/src')
-rw-r--r--framework/src/accounts/accountfactory.cpp2
-rw-r--r--framework/src/accounts/accountfactory.h2
-rw-r--r--framework/src/domain/settings/accountsettings.cpp6
-rw-r--r--framework/src/frameworkplugin.cpp9
-rw-r--r--framework/src/keyring.cpp17
-rw-r--r--framework/src/keyring.h14
-rw-r--r--framework/src/sinkfabric.cpp2
7 files changed, 43 insertions, 9 deletions
diff --git a/framework/src/accounts/accountfactory.cpp b/framework/src/accounts/accountfactory.cpp
index f1c4e29c..9726a2e0 100644
--- a/framework/src/accounts/accountfactory.cpp
+++ b/framework/src/accounts/accountfactory.cpp
@@ -64,6 +64,7 @@ void AccountFactory::loadPackage()
64 if (!package.isValid()) { 64 if (!package.isValid()) {
65 qWarning() << "Failed to load account package: " << "org.kube.accounts." + mAccountType; 65 qWarning() << "Failed to load account package: " << "org.kube.accounts." + mAccountType;
66 mUiPath.clear(); 66 mUiPath.clear();
67 mLoginUi.clear();
67 mName.clear(); 68 mName.clear();
68 mIcon.clear(); 69 mIcon.clear();
69 emit accountLoaded(); 70 emit accountLoaded();
@@ -71,6 +72,7 @@ void AccountFactory::loadPackage()
71 } 72 }
72 Q_ASSERT(package.isValid()); 73 Q_ASSERT(package.isValid());
73 mUiPath = package.filePath("mainscript"); 74 mUiPath = package.filePath("mainscript");
75 mLoginUi = package.filePath("ui", "Login.qml");
74 mName = package.metadata().name(); 76 mName = package.metadata().name();
75 mIcon = package.metadata().iconName(); 77 mIcon = package.metadata().iconName();
76 emit accountLoaded(); 78 emit accountLoaded();
diff --git a/framework/src/accounts/accountfactory.h b/framework/src/accounts/accountfactory.h
index b57854e5..21747df5 100644
--- a/framework/src/accounts/accountfactory.h
+++ b/framework/src/accounts/accountfactory.h
@@ -33,6 +33,7 @@ class AccountFactory : public QObject
33 Q_PROPERTY(QString name MEMBER mName READ name NOTIFY accountLoaded); 33 Q_PROPERTY(QString name MEMBER mName READ name NOTIFY accountLoaded);
34 Q_PROPERTY(QString icon MEMBER mIcon NOTIFY accountLoaded); 34 Q_PROPERTY(QString icon MEMBER mIcon NOTIFY accountLoaded);
35 Q_PROPERTY(QString uiPath MEMBER mUiPath NOTIFY accountLoaded); 35 Q_PROPERTY(QString uiPath MEMBER mUiPath NOTIFY accountLoaded);
36 Q_PROPERTY(QString loginUi MEMBER mLoginUi NOTIFY accountLoaded);
36public: 37public:
37 explicit AccountFactory(QObject *parent = Q_NULLPTR); 38 explicit AccountFactory(QObject *parent = Q_NULLPTR);
38 39
@@ -49,5 +50,6 @@ private:
49 QString mName; 50 QString mName;
50 QString mIcon; 51 QString mIcon;
51 QString mUiPath; 52 QString mUiPath;
53 QString mLoginUi;
52 QByteArray mAccountType; 54 QByteArray mAccountType;
53}; 55};
diff --git a/framework/src/domain/settings/accountsettings.cpp b/framework/src/domain/settings/accountsettings.cpp
index 09cdf279..c174adfe 100644
--- a/framework/src/domain/settings/accountsettings.cpp
+++ b/framework/src/domain/settings/accountsettings.cpp
@@ -292,7 +292,7 @@ void AccountSettings::saveImapResource()
292 {"server", mImapServer}, 292 {"server", mImapServer},
293 {"username", mImapUsername} 293 {"username", mImapUsername}
294 }); 294 });
295 Kube::Keyring{mAccountIdentifier}.storePassword(mImapIdentifier, mImapPassword); 295 Kube::AccountKeyring{mAccountIdentifier}.storePassword(mImapIdentifier, mImapPassword);
296} 296}
297 297
298void AccountSettings::saveCardDavResource() 298void AccountSettings::saveCardDavResource()
@@ -301,7 +301,7 @@ void AccountSettings::saveCardDavResource()
301 {"server", mCardDavServer}, 301 {"server", mCardDavServer},
302 {"username", mCardDavUsername} 302 {"username", mCardDavUsername}
303 }); 303 });
304 Kube::Keyring{mAccountIdentifier}.storePassword(mCardDavIdentifier, mCardDavPassword); 304 Kube::AccountKeyring{mAccountIdentifier}.storePassword(mCardDavIdentifier, mCardDavPassword);
305} 305}
306 306
307void AccountSettings::saveMaildirResource() 307void AccountSettings::saveMaildirResource()
@@ -317,7 +317,7 @@ void AccountSettings::saveMailtransportResource()
317 {"server", mSmtpServer}, 317 {"server", mSmtpServer},
318 {"username", mSmtpUsername} 318 {"username", mSmtpUsername}
319 }); 319 });
320 Kube::Keyring{mAccountIdentifier}.storePassword(mMailtransportIdentifier, mSmtpPassword); 320 Kube::AccountKeyring{mAccountIdentifier}.storePassword(mMailtransportIdentifier, mSmtpPassword);
321} 321}
322 322
323void AccountSettings::saveIdentity() 323void AccountSettings::saveIdentity()
diff --git a/framework/src/frameworkplugin.cpp b/framework/src/frameworkplugin.cpp
index b8cad45d..1e1a169e 100644
--- a/framework/src/frameworkplugin.cpp
+++ b/framework/src/frameworkplugin.cpp
@@ -38,6 +38,7 @@
38#include "clipboardproxy.h" 38#include "clipboardproxy.h"
39#include "webengineprofile.h" 39#include "webengineprofile.h"
40#include "startupcheck.h" 40#include "startupcheck.h"
41#include "keyring.h"
41 42
42#include <QtQml> 43#include <QtQml>
43 44
@@ -55,6 +56,13 @@ static QObject *webengineprofile_singletontype_provider(QQmlEngine *engine, QJSE
55 return new WebEngineProfile; 56 return new WebEngineProfile;
56} 57}
57 58
59static QObject *keyring_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
60{
61 Q_UNUSED(engine)
62 Q_UNUSED(scriptEngine)
63 return new Kube::Keyring;
64}
65
58void FrameworkPlugin::registerTypes (const char *uri) 66void FrameworkPlugin::registerTypes (const char *uri)
59{ 67{
60 qmlRegisterType<FolderListModel>(uri, 1, 0, "FolderListModel"); 68 qmlRegisterType<FolderListModel>(uri, 1, 0, "FolderListModel");
@@ -80,4 +88,5 @@ void FrameworkPlugin::registerTypes (const char *uri)
80 qmlRegisterType<ClipboardProxy>(uri, 1, 0, "Clipboard"); 88 qmlRegisterType<ClipboardProxy>(uri, 1, 0, "Clipboard");
81 qmlRegisterType<StartupCheck>(uri, 1, 0, "StartupCheck"); 89 qmlRegisterType<StartupCheck>(uri, 1, 0, "StartupCheck");
82 qmlRegisterSingletonType<WebEngineProfile>(uri, 1, 0, "WebEngineProfile", webengineprofile_singletontype_provider); 90 qmlRegisterSingletonType<WebEngineProfile>(uri, 1, 0, "WebEngineProfile", webengineprofile_singletontype_provider);
91 qmlRegisterSingletonType<Kube::Keyring>(uri, 1, 0, "Keyring", keyring_singletontype_provider);
83} 92}
diff --git a/framework/src/keyring.cpp b/framework/src/keyring.cpp
index 759d0c4c..e3fdb1cb 100644
--- a/framework/src/keyring.cpp
+++ b/framework/src/keyring.cpp
@@ -23,20 +23,31 @@
23 23
24using namespace Kube; 24using namespace Kube;
25 25
26Keyring::Keyring(const QByteArray &accountId, QObject *parent) 26Keyring::Keyring()
27 : QObject()
28{
29
30}
31
32bool Keyring::isUnlocked(const QByteArray &accountId)
33{
34 return false;
35}
36
37AccountKeyring::AccountKeyring(const QByteArray &accountId, QObject *parent)
27 : QObject(parent), 38 : QObject(parent),
28 mAccountIdentifier(accountId) 39 mAccountIdentifier(accountId)
29{ 40{
30} 41}
31 42
32void Keyring::storePassword(const QByteArray &resourceId, const QString &password) 43void AccountKeyring::storePassword(const QByteArray &resourceId, const QString &password)
33{ 44{
34 QSettings settings{mAccountIdentifier + ".keyring", QSettings::IniFormat}; 45 QSettings settings{mAccountIdentifier + ".keyring", QSettings::IniFormat};
35 settings.setValue(resourceId, password); 46 settings.setValue(resourceId, password);
36 Sink::SecretStore::instance().insert(resourceId, password); 47 Sink::SecretStore::instance().insert(resourceId, password);
37} 48}
38 49
39void Keyring::unlock() 50void AccountKeyring::unlock()
40{ 51{
41 QSettings settings{mAccountIdentifier + ".keyring", QSettings::IniFormat}; 52 QSettings settings{mAccountIdentifier + ".keyring", QSettings::IniFormat};
42 for (const auto &resourceId : settings.allKeys()) { 53 for (const auto &resourceId : settings.allKeys()) {
diff --git a/framework/src/keyring.h b/framework/src/keyring.h
index ee9c3577..ce4e137d 100644
--- a/framework/src/keyring.h
+++ b/framework/src/keyring.h
@@ -24,12 +24,22 @@ namespace Kube {
24class Keyring : public QObject { 24class Keyring : public QObject {
25 Q_OBJECT 25 Q_OBJECT
26public: 26public:
27 Keyring(const QByteArray &accountId, QObject *parent = nullptr); 27 Keyring();
28 Q_INVOKABLE bool isUnlocked(const QByteArray &accountId);
29
30private:
31 Q_DISABLE_COPY(Keyring);
32};
33
34class AccountKeyring : public QObject {
35 Q_OBJECT
36public:
37 AccountKeyring(const QByteArray &accountId, QObject *parent = nullptr);
28 void storePassword(const QByteArray &resourceId, const QString &password); 38 void storePassword(const QByteArray &resourceId, const QString &password);
29 void unlock(); 39 void unlock();
30 40
31private: 41private:
32 Q_DISABLE_COPY(Keyring); 42 Q_DISABLE_COPY(AccountKeyring);
33 43
34 QByteArray mAccountIdentifier; 44 QByteArray mAccountIdentifier;
35}; 45};
diff --git a/framework/src/sinkfabric.cpp b/framework/src/sinkfabric.cpp
index 954186bb..87b243e0 100644
--- a/framework/src/sinkfabric.cpp
+++ b/framework/src/sinkfabric.cpp
@@ -135,7 +135,7 @@ public:
135 } 135 }
136 if (id == "unlockKeyring") { 136 if (id == "unlockKeyring") {
137 auto accountId = message["accountId"].value<QByteArray>(); 137 auto accountId = message["accountId"].value<QByteArray>();
138 Kube::Keyring{accountId}.unlock(); 138 Kube::AccountKeyring{accountId}.unlock();
139 } 139 }
140 } 140 }
141 141