diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-05-11 18:44:10 +0300 |
---|---|---|
committer | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-05-11 18:44:55 +0300 |
commit | 9e3c0d923e00c0597c9bdaef97a5e159982ea376 (patch) | |
tree | e3af5a1a6ffa86e747a135c5a17c97b97cb9aa63 | |
parent | 67802c5bcd6f4b05f9ec84c83b232f18f595a396 (diff) |
Don't persist cookieswork/cookies
-rw-r--r-- | changelog/unreleased/9495 | 5 | ||||
-rw-r--r-- | src/gui/accountmanager.cpp | 16 | ||||
-rw-r--r-- | src/libsync/account.cpp | 1 | ||||
-rw-r--r-- | src/libsync/cookiejar.cpp | 81 | ||||
-rw-r--r-- | src/libsync/cookiejar.h | 3 | ||||
-rw-r--r-- | test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/testcookies.cpp | 43 |
7 files changed, 5 insertions, 145 deletions
diff --git a/changelog/unreleased/9495 b/changelog/unreleased/9495 new file mode 100644 index 000000000..e24b94795 --- /dev/null +++ b/changelog/unreleased/9495 @@ -0,0 +1,5 @@ +Change: We no longer persist cookies + +We no longer persist cookies over multiple client session. + +https://github.com/owncloud/client/issues/9495 diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index 32bc8f152..0e34406a3 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -107,10 +107,6 @@ bool AccountManager::restore() if (auto acc = loadAccountHelper(*settings)) { acc->_id = accountId; if (auto accState = AccountState::loadFromSettings(acc, *settings)) { - auto jar = qobject_cast<CookieJar*>(acc->_am->cookieJar()); - OC_ASSERT(jar); - if (jar) - jar->restore(acc->cookieJarPath()); addAccountState(accState); } } @@ -288,18 +284,6 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s settings.setValue(QLatin1String(caCertsKeyC), certs); } settings.endGroup(); - - // Save cookies. - if (acc->_am) { - CookieJar *jar = qobject_cast<CookieJar *>(acc->_am->cookieJar()); - if (jar) { - qCInfo(lcAccountManager) << "Saving cookies." << acc->cookieJarPath(); - if (!jar->save(acc->cookieJarPath())) - { - qCWarning(lcAccountManager) << "Failed to save cookies to" << acc->cookieJarPath(); - } - } - } } AccountPtr AccountManager::loadAccountHelper(QSettings &settings) diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 90218acad..d0f3ca869 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -199,7 +199,6 @@ void Account::clearCookieJar() OC_ASSERT(jar); qCInfo(lcAccount) << "Clearing cookies"; jar->setAllCookies(QList<QNetworkCookie>()); - emit wantsAccountSaved(this); } /*! This shares our official cookie jar (containing all the tasty diff --git a/src/libsync/cookiejar.cpp b/src/libsync/cookiejar.cpp index 75535d876..72d3f4cbb 100644 --- a/src/libsync/cookiejar.cpp +++ b/src/libsync/cookiejar.cpp @@ -27,46 +27,6 @@ namespace OCC { Q_LOGGING_CATEGORY(lcCookieJar, "sync.cookiejar", QtInfoMsg) -namespace { - const unsigned int JAR_VERSION = 23; -} - -QDataStream &operator<<(QDataStream &stream, const QList<QNetworkCookie> &list) -{ - stream << JAR_VERSION; - stream << quint32(list.size()); - for (int i = 0; i < list.size(); ++i) - stream << list.at(i).toRawForm(); - return stream; -} - -QDataStream &operator>>(QDataStream &stream, QList<QNetworkCookie> &list) -{ - list.clear(); - - quint32 version; - stream >> version; - - if (version != JAR_VERSION) - return stream; - - quint32 count; - stream >> count; - for (quint32 i = 0; i < count; ++i) { - QByteArray value; - stream >> value; - QList<QNetworkCookie> newCookies = QNetworkCookie::parseCookies(value); - if (newCookies.count() == 0 && value.length() != 0) { - qCWarning(lcCookieJar) << "CookieJar: Unable to parse saved cookie:" << value; - } - for (int j = 0; j < newCookies.count(); ++j) - list.append(newCookies.at(j)); - if (stream.atEnd()) - break; - } - return stream; -} - CookieJar::CookieJar(QObject *parent) : QNetworkCookieJar(parent) { @@ -98,47 +58,6 @@ void CookieJar::clearSessionCookies() setAllCookies(removeExpired(allCookies())); } -bool CookieJar::save(const QString &fileName) -{ - const QFileInfo info(fileName); - if (!info.dir().exists()) - { - info.dir().mkpath(QStringLiteral(".")); - } - - qCDebug(lcCookieJar) << fileName; - QFile file(fileName); - if (!file.open(QIODevice::WriteOnly)) - { - return false; - } - QDataStream stream(&file); - stream << removeExpired(allCookies()); - file.close(); - return true; -} - -bool CookieJar::restore(const QString &fileName) -{ - const QFileInfo info(fileName); - if (!info.exists()) - { - return false; - } - - QFile file(fileName); - if (!file.open(QIODevice::ReadOnly)) - { - return false; - } - QDataStream stream(&file); - QList<QNetworkCookie> list; - stream >> list; - setAllCookies(removeExpired(list)); - file.close(); - return true; -} - QList<QNetworkCookie> CookieJar::removeExpired(const QList<QNetworkCookie> &cookies) { QList<QNetworkCookie> updatedList; diff --git a/src/libsync/cookiejar.h b/src/libsync/cookiejar.h index 6d3703aaa..2346f1b4a 100644 --- a/src/libsync/cookiejar.h +++ b/src/libsync/cookiejar.h @@ -39,9 +39,6 @@ public: using QNetworkCookieJar::setAllCookies; using QNetworkCookieJar::allCookies; - bool save(const QString &fileName); - bool restore(const QString &fileName); - signals: void newCookiesForUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c7c4c7486..7db12487b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -7,7 +7,6 @@ owncloud_add_test(OwnSql) owncloud_add_test(SyncJournalDB) owncloud_add_test(SyncFileItem) owncloud_add_test(ConcatUrl) -owncloud_add_test(Cookies) owncloud_add_test(XmlParse) owncloud_add_test(ChecksumValidator) diff --git a/test/testcookies.cpp b/test/testcookies.cpp deleted file mode 100644 index a5053abd9..000000000 --- a/test/testcookies.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - This software is in the public domain, furnished "as is", without technical - support, and with no warranty, express or implied, as to its usefulness for - any purpose. -*/ - -#include <QtTest> - -#include "libsync/cookiejar.h" - -using namespace OCC; - -class TestCookies : public QObject -{ - Q_OBJECT - -private slots: - void testCookies() - { - QTemporaryDir tmp; - const QString nonexistingPath = tmp.filePath("someNonexistingDir/test.db"); - QNetworkCookie cookieA = QNetworkCookie("foo", "bar"); - // tomorrow rounded - cookieA.setExpirationDate(QDateTime(QDateTime::currentDateTimeUtc().addDays(1).date())); - const QList<QNetworkCookie> cookies = {cookieA, QNetworkCookie("foo2", "bar")}; - CookieJar jar; - jar.setAllCookies(cookies); - QCOMPARE(cookies, jar.allCookies()); - QVERIFY(jar.save(tmp.filePath("test.db"))); - // ensure we are able to create a cookie jar in a non exisitning folder (mkdir) - QVERIFY(jar.save(nonexistingPath)); - - CookieJar jar2; - QVERIFY(jar2.restore(nonexistingPath)); - // here we should have only cookieA as the second one was a session cookie - QCOMPARE(QList<QNetworkCookie>{cookieA}, jar2.allCookies()); - - } - -}; - -QTEST_APPLESS_MAIN(TestCookies) -#include "testcookies.moc" |