Use QtKeychain on Android
This commit is contained in:
@@ -48,18 +48,18 @@ set_package_properties(KF5Kirigami2 PROPERTIES
|
|||||||
PURPOSE "Kirigami application UI framework"
|
PURPOSE "Kirigami application UI framework"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
find_package(Qt5Keychain)
|
||||||
|
set_package_properties(Qt5Keychain PROPERTIES
|
||||||
|
TYPE REQUIRED
|
||||||
|
PURPOSE "Secure storage of account secrets"
|
||||||
|
)
|
||||||
|
|
||||||
if(ANDROID)
|
if(ANDROID)
|
||||||
find_package(OpenSSL)
|
find_package(OpenSSL)
|
||||||
set_package_properties(OpenSSL PROPERTIES
|
set_package_properties(OpenSSL PROPERTIES
|
||||||
TYPE REQUIRED
|
TYPE REQUIRED
|
||||||
PURPOSE "Encrypted communications"
|
PURPOSE "Encrypted communications"
|
||||||
)
|
)
|
||||||
else()
|
|
||||||
find_package(Qt5Keychain)
|
|
||||||
set_package_properties(Qt5Keychain PROPERTIES
|
|
||||||
TYPE REQUIRED
|
|
||||||
PURPOSE "Secure storage of account secrets"
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT ANDROID AND NOT WIN32 AND NOT APPLE)
|
if (NOT ANDROID AND NOT WIN32 AND NOT APPLE)
|
||||||
|
|||||||
@@ -6,9 +6,8 @@
|
|||||||
*/
|
*/
|
||||||
#include "controller.h"
|
#include "controller.h"
|
||||||
|
|
||||||
#ifndef Q_OS_ANDROID
|
|
||||||
#include <qt5keychain/keychain.h>
|
#include <qt5keychain/keychain.h>
|
||||||
#endif
|
|
||||||
#include <KConfig>
|
#include <KConfig>
|
||||||
#include <KConfigGroup>
|
#include <KConfigGroup>
|
||||||
#include <KWindowConfig>
|
#include <KWindowConfig>
|
||||||
@@ -145,7 +144,6 @@ void Controller::logout(Connection *conn, bool serverSideLogout)
|
|||||||
SettingsGroup("Accounts").remove(conn->userId());
|
SettingsGroup("Accounts").remove(conn->userId());
|
||||||
QFile(accessTokenFileName(AccountSettings(conn->userId()))).remove();
|
QFile(accessTokenFileName(AccountSettings(conn->userId()))).remove();
|
||||||
|
|
||||||
#ifndef Q_OS_ANDROID
|
|
||||||
QKeychain::DeletePasswordJob job(qAppName());
|
QKeychain::DeletePasswordJob job(qAppName());
|
||||||
job.setAutoDelete(true);
|
job.setAutoDelete(true);
|
||||||
job.setKey(conn->userId());
|
job.setKey(conn->userId());
|
||||||
@@ -153,11 +151,7 @@ void Controller::logout(Connection *conn, bool serverSideLogout)
|
|||||||
QKeychain::DeletePasswordJob::connect(&job, &QKeychain::Job::finished, &loop, &QEventLoop::quit);
|
QKeychain::DeletePasswordJob::connect(&job, &QKeychain::Job::finished, &loop, &QEventLoop::quit);
|
||||||
job.start();
|
job.start();
|
||||||
loop.exec();
|
loop.exec();
|
||||||
#else
|
|
||||||
KConfig config("neochat_tokens");
|
|
||||||
KConfigGroup tokensGroup(&config, "Tokens");
|
|
||||||
tokensGroup.deleteEntry(conn->userId());
|
|
||||||
#endif
|
|
||||||
conn->stopSync();
|
conn->stopSync();
|
||||||
Q_EMIT conn->stateChanged();
|
Q_EMIT conn->stateChanged();
|
||||||
Q_EMIT conn->loggedOut();
|
Q_EMIT conn->loggedOut();
|
||||||
@@ -340,7 +334,6 @@ bool Controller::saveAccessTokenToFile(const AccountSettings &account, const QBy
|
|||||||
|
|
||||||
bool Controller::saveAccessTokenToKeyChain(const AccountSettings &account, const QByteArray &accessToken)
|
bool Controller::saveAccessTokenToKeyChain(const AccountSettings &account, const QByteArray &accessToken)
|
||||||
{
|
{
|
||||||
#ifndef Q_OS_ANDROID
|
|
||||||
qDebug() << "Save the access token to the keychain for " << account.userId();
|
qDebug() << "Save the access token to the keychain for " << account.userId();
|
||||||
QKeychain::WritePasswordJob job(qAppName());
|
QKeychain::WritePasswordJob job(qAppName());
|
||||||
job.setAutoDelete(false);
|
job.setAutoDelete(false);
|
||||||
@@ -355,12 +348,6 @@ bool Controller::saveAccessTokenToKeyChain(const AccountSettings &account, const
|
|||||||
qWarning() << "Could not save access token to the keychain: " << qPrintable(job.errorString());
|
qWarning() << "Could not save access token to the keychain: " << qPrintable(job.errorString());
|
||||||
return saveAccessTokenToFile(account, accessToken);
|
return saveAccessTokenToFile(account, accessToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
KConfig config("neochat_tokens");
|
|
||||||
KConfigGroup tokensGroup(&config, "Tokens");
|
|
||||||
tokensGroup.writeEntry(account.userId(), accessToken);
|
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user