From 4dab74c13ccc638c0224f17c37c6f42a5bc75d8a Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 2 Oct 2017 09:33:58 +0200 Subject: [PATCH] Do not store access token, prepare DB for Inoreader multi acc. --- resources/binaries | 2 +- resources/sql/db_init_mysql.sql | 5 +++- resources/sql/db_init_sqlite.sql | 4 +++- resources/sql/db_update_mysql_9_10.sql | 4 +++- resources/sql/db_update_sqlite_9_10.sql | 4 +++- src/miscellaneous/databasequeries.cpp | 23 ++++++++----------- src/miscellaneous/databasequeries.h | 6 ++--- src/network-web/oauth2service.cpp | 8 ------- src/network-web/oauth2service.h | 3 --- .../inoreader/inoreaderserviceroot.cpp | 10 ++++---- .../network/inoreadernetworkfactory.cpp | 2 +- 11 files changed, 33 insertions(+), 38 deletions(-) diff --git a/resources/binaries b/resources/binaries index d44aacc99..e9833a2e4 160000 --- a/resources/binaries +++ b/resources/binaries @@ -1 +1 @@ -Subproject commit d44aacc99fdc997648c924f0d5444566164f142e +Subproject commit e9833a2e45d8d3241f662d3a03ed19d3446386ce diff --git a/resources/sql/db_init_mysql.sql b/resources/sql/db_init_mysql.sql index 807f21c08..0fe05913a 100644 --- a/resources/sql/db_init_mysql.sql +++ b/resources/sql/db_init_mysql.sql @@ -46,12 +46,15 @@ CREATE TABLE IF NOT EXISTS OwnCloudAccounts ( CREATE TABLE IF NOT EXISTS InoreaderAccounts ( id INTEGER, username TEXT NOT NULL, - access_token TEXT, + app_id TEXT, + app_key TEXT, + redirect_url TEXT, refresh_token TEXT, msg_limit INTEGER NOT NULL DEFAULT -1 CHECK (msg_limit >= -1), FOREIGN KEY (id) REFERENCES Accounts (id) ); +-- ! DROP TABLE IF EXISTS Categories; -- ! CREATE TABLE IF NOT EXISTS Categories ( diff --git a/resources/sql/db_init_sqlite.sql b/resources/sql/db_init_sqlite.sql index ea0bd781d..ca8378050 100644 --- a/resources/sql/db_init_sqlite.sql +++ b/resources/sql/db_init_sqlite.sql @@ -40,7 +40,9 @@ CREATE TABLE IF NOT EXISTS OwnCloudAccounts ( CREATE TABLE IF NOT EXISTS InoreaderAccounts ( id INTEGER, username TEXT NOT NULL, - access_token TEXT, + app_id TEXT, + app_key TEXT, + redirect_url TEXT, refresh_token TEXT, msg_limit INTEGER NOT NULL DEFAULT -1 CHECK (msg_limit >= -1), diff --git a/resources/sql/db_update_mysql_9_10.sql b/resources/sql/db_update_mysql_9_10.sql index f781743b5..c8694580d 100755 --- a/resources/sql/db_update_mysql_9_10.sql +++ b/resources/sql/db_update_mysql_9_10.sql @@ -1,7 +1,9 @@ CREATE TABLE IF NOT EXISTS InoreaderAccounts ( id INTEGER, username TEXT NOT NULL, - access_token TEXT, + app_id TEXT, + app_key TEXT, + redirect_url TEXT, refresh_token TEXT, msg_limit INTEGER NOT NULL DEFAULT -1 CHECK (msg_limit >= -1), diff --git a/resources/sql/db_update_sqlite_9_10.sql b/resources/sql/db_update_sqlite_9_10.sql index da852c8c2..f7aa98310 100755 --- a/resources/sql/db_update_sqlite_9_10.sql +++ b/resources/sql/db_update_sqlite_9_10.sql @@ -1,7 +1,9 @@ CREATE TABLE IF NOT EXISTS InoreaderAccounts ( id INTEGER, username TEXT NOT NULL, - access_token TEXT, + app_id TEXT, + app_key TEXT, + redirect_url TEXT, refresh_token TEXT, msg_limit INTEGER NOT NULL DEFAULT -1 CHECK (msg_limit >= -1), diff --git a/src/miscellaneous/databasequeries.cpp b/src/miscellaneous/databasequeries.cpp index 5e0f8d8a4..761155aa4 100755 --- a/src/miscellaneous/databasequeries.cpp +++ b/src/miscellaneous/databasequeries.cpp @@ -1522,14 +1522,12 @@ Assignment DatabaseQueries::getInoreaderFeeds(QSqlDatabase db, int account_id, b return feeds; } -bool DatabaseQueries::storeNewInoreaderTokens(QSqlDatabase db, const QString& access_token, - const QString& refresh_token, int account_id) { +bool DatabaseQueries::storeNewInoreaderTokens(QSqlDatabase db, const QString& refresh_token, int account_id) { QSqlQuery query(db); query.prepare("UPDATE InoreaderAccounts " - "SET access_token = :access_token, refresh_token = :refresh_token " + "SET refresh_token = :refresh_token " "WHERE id = :id;"); - query.bindValue(QSL(":access_token"), access_token); query.bindValue(QSL(":refresh_token"), refresh_token); query.bindValue(QSL(":id"), account_id); @@ -1554,9 +1552,8 @@ QList DatabaseQueries::getInoreaderAccounts(QSqlDatabase db, bool* root->setId(query.value(0).toInt()); root->setAccountId(query.value(0).toInt()); root->network()->setUsername(query.value(1).toString()); - root->network()->oauth()->setAccessToken(query.value(2).toString()); - root->network()->oauth()->setRefreshToken(query.value(3).toString()); - root->network()->setBatchSize(query.value(4).toInt()); + root->network()->oauth()->setRefreshToken(query.value(5).toString()); + root->network()->setBatchSize(query.value(6).toInt()); root->updateTitle(); roots.append(root); } @@ -1576,15 +1573,14 @@ QList DatabaseQueries::getInoreaderAccounts(QSqlDatabase db, bool* return roots; } -bool DatabaseQueries::overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& access_token, +bool DatabaseQueries::overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& refresh_token, int batch_size, int account_id) { QSqlQuery query(db); query.prepare("UPDATE InoreaderAccounts " - "SET username = :username, access_token = :access_token, refresh_token = :refresh_token , msg_limit = :msg_limit " + "SET username = :username, refresh_token = :refresh_token , msg_limit = :msg_limit " "WHERE id = :id;"); query.bindValue(QSL(":username"), username); - query.bindValue(QSL(":access_token"), access_token); query.bindValue(QSL(":refresh_token"), refresh_token); query.bindValue(QSL(":id"), account_id); query.bindValue(QSL(":msg_limit"), batch_size <= 0 ? INOREADER_DEFAULT_BATCH_SIZE : batch_size); @@ -1599,14 +1595,13 @@ bool DatabaseQueries::overwriteInoreaderAccount(QSqlDatabase db, const QString& } bool DatabaseQueries::createInoreaderAccount(QSqlDatabase db, int id_to_assign, const QString& username, - const QString& access_token, const QString& refresh_token, int batch_size) { + const QString& refresh_token, int batch_size) { QSqlQuery q(db); - q.prepare("INSERT INTO InoreaderAccounts (id, username, access_token, refresh_token, msg_limit) " - "VALUES (:id, :username, :access_token, :refresh_token, :msg_limit);"); + q.prepare("INSERT INTO InoreaderAccounts (id, username, refresh_token, msg_limit) " + "VALUES (:id, :username, :refresh_token, :msg_limit);"); q.bindValue(QSL(":id"), id_to_assign); q.bindValue(QSL(":username"), username); - q.bindValue(QSL(":access_token"), access_token); q.bindValue(QSL(":refresh_token"), refresh_token); q.bindValue(QSL(":msg_limit"), batch_size <= 0 ? INOREADER_DEFAULT_BATCH_SIZE : batch_size); diff --git a/src/miscellaneous/databasequeries.h b/src/miscellaneous/databasequeries.h index 434697023..d763c3b9e 100755 --- a/src/miscellaneous/databasequeries.h +++ b/src/miscellaneous/databasequeries.h @@ -81,12 +81,12 @@ class DatabaseQueries { // Inoreader account. #if defined(USE_WEBENGINE) static Assignment getInoreaderFeeds(QSqlDatabase db, int account_id, bool* ok = nullptr); - static bool storeNewInoreaderTokens(QSqlDatabase db, const QString& access_token, const QString& refresh_token, int account_id); + static bool storeNewInoreaderTokens(QSqlDatabase db, const QString& refresh_token, int account_id); static QList getInoreaderAccounts(QSqlDatabase db, bool* ok = nullptr); - static bool overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& access_token, + static bool overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& refresh_token, int batch_size, int account_id); static bool createInoreaderAccount(QSqlDatabase db, int id_to_assign, const QString& username, - const QString& access_token, const QString& refresh_token, int batch_size); + const QString& refresh_token, int batch_size); #endif // ownCloud account. diff --git a/src/network-web/oauth2service.cpp b/src/network-web/oauth2service.cpp index 5cf2a78f3..8efddf6ac 100755 --- a/src/network-web/oauth2service.cpp +++ b/src/network-web/oauth2service.cpp @@ -203,11 +203,3 @@ void OAuth2Service::retrieveAuthCode() { }); login_page.login(auth_url, m_redirectUri); } - -QString OAuth2Service::accessToken() const { - return m_accessToken; -} - -void OAuth2Service::setAccessToken(const QString& access_token) { - m_accessToken = access_token; -} diff --git a/src/network-web/oauth2service.h b/src/network-web/oauth2service.h index 58cf5734b..073b43b24 100755 --- a/src/network-web/oauth2service.h +++ b/src/network-web/oauth2service.h @@ -59,9 +59,6 @@ class OAuth2Service : public QObject { void setOAuthTokenGrantType(QString grant_type); QString grant_type(); - QString accessToken() const; - void setAccessToken(const QString& access_token); - QString refreshToken() const; void setRefreshToken(const QString& refresh_token); diff --git a/src/services/inoreader/inoreaderserviceroot.cpp b/src/services/inoreader/inoreaderserviceroot.cpp index 1030b316b..680ea500b 100755 --- a/src/services/inoreader/inoreaderserviceroot.cpp +++ b/src/services/inoreader/inoreaderserviceroot.cpp @@ -66,8 +66,9 @@ void InoreaderServiceRoot::saveAccountDataToDatabase() { QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings); if (accountId() != NO_PARENT_CATEGORY) { - if (DatabaseQueries::overwriteInoreaderAccount(database, m_network->userName(), m_network->oauth()->accessToken(), - m_network->oauth()->refreshToken(), m_network->batchSize(), + if (DatabaseQueries::overwriteInoreaderAccount(database, m_network->userName(), + m_network->oauth()->refreshToken(), + m_network->batchSize(), accountId())) { updateTitle(); itemChanged(QList() << this); @@ -79,8 +80,9 @@ void InoreaderServiceRoot::saveAccountDataToDatabase() { if (saved) { if (DatabaseQueries::createInoreaderAccount(database, id_to_assign, - m_network->userName(), m_network->oauth()->accessToken(), - m_network->oauth()->refreshToken(), m_network->batchSize())) { + m_network->userName(), + m_network->oauth()->refreshToken(), + m_network->batchSize())) { setId(id_to_assign); setAccountId(id_to_assign); updateTitle(); diff --git a/src/services/inoreader/network/inoreadernetworkfactory.cpp b/src/services/inoreader/network/inoreadernetworkfactory.cpp index 22a688171..bbf607213 100755 --- a/src/services/inoreader/network/inoreadernetworkfactory.cpp +++ b/src/services/inoreader/network/inoreadernetworkfactory.cpp @@ -75,7 +75,7 @@ void InoreaderNetworkFactory::initializeOauth() { if (m_service != nullptr && !access_token.isEmpty() && !refresh_token.isEmpty()) { QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings); - DatabaseQueries::storeNewInoreaderTokens(database, access_token, refresh_token, m_service->accountId()); + DatabaseQueries::storeNewInoreaderTokens(database, refresh_token, m_service->accountId()); } }); }