diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-09-21 17:30:25 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-09-22 10:26:27 +0200 |
commit | 1b1e83aeb820df85ce7f10e81fe1f44deab2174e (patch) | |
tree | 8a137d8f286a3595d9171c24b45655c4b2b03427 /framework/src | |
parent | 777cb40dae338e79e8f4160882b7c37900b42238 (diff) | |
download | kube-1b1e83aeb820df85ce7f10e81fe1f44deab2174e.tar.gz kube-1b1e83aeb820df85ce7f10e81fe1f44deab2174e.zip |
A login view
Diffstat (limited to 'framework/src')
-rw-r--r-- | framework/src/accounts/accountfactory.cpp | 2 | ||||
-rw-r--r-- | framework/src/accounts/accountfactory.h | 2 | ||||
-rw-r--r-- | framework/src/domain/settings/accountsettings.cpp | 6 | ||||
-rw-r--r-- | framework/src/frameworkplugin.cpp | 9 | ||||
-rw-r--r-- | framework/src/keyring.cpp | 17 | ||||
-rw-r--r-- | framework/src/keyring.h | 14 | ||||
-rw-r--r-- | framework/src/sinkfabric.cpp | 2 |
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); | ||
36 | public: | 37 | public: |
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 | ||
298 | void AccountSettings::saveCardDavResource() | 298 | void 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 | ||
307 | void AccountSettings::saveMaildirResource() | 307 | void 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 | ||
323 | void AccountSettings::saveIdentity() | 323 | void 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 | ||
59 | static QObject *keyring_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine) | ||
60 | { | ||
61 | Q_UNUSED(engine) | ||
62 | Q_UNUSED(scriptEngine) | ||
63 | return new Kube::Keyring; | ||
64 | } | ||
65 | |||
58 | void FrameworkPlugin::registerTypes (const char *uri) | 66 | void 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 | ||
24 | using namespace Kube; | 24 | using namespace Kube; |
25 | 25 | ||
26 | Keyring::Keyring(const QByteArray &accountId, QObject *parent) | 26 | Keyring::Keyring() |
27 | : QObject() | ||
28 | { | ||
29 | |||
30 | } | ||
31 | |||
32 | bool Keyring::isUnlocked(const QByteArray &accountId) | ||
33 | { | ||
34 | return false; | ||
35 | } | ||
36 | |||
37 | AccountKeyring::AccountKeyring(const QByteArray &accountId, QObject *parent) | ||
27 | : QObject(parent), | 38 | : QObject(parent), |
28 | mAccountIdentifier(accountId) | 39 | mAccountIdentifier(accountId) |
29 | { | 40 | { |
30 | } | 41 | } |
31 | 42 | ||
32 | void Keyring::storePassword(const QByteArray &resourceId, const QString &password) | 43 | void 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 | ||
39 | void Keyring::unlock() | 50 | void 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 { | |||
24 | class Keyring : public QObject { | 24 | class Keyring : public QObject { |
25 | Q_OBJECT | 25 | Q_OBJECT |
26 | public: | 26 | public: |
27 | Keyring(const QByteArray &accountId, QObject *parent = nullptr); | 27 | Keyring(); |
28 | Q_INVOKABLE bool isUnlocked(const QByteArray &accountId); | ||
29 | |||
30 | private: | ||
31 | Q_DISABLE_COPY(Keyring); | ||
32 | }; | ||
33 | |||
34 | class AccountKeyring : public QObject { | ||
35 | Q_OBJECT | ||
36 | public: | ||
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 | ||
31 | private: | 41 | private: |
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 | ||