diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-05-13 12:32:08 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2022-05-13 14:08:30 +0300 |
commit | e8064c05e88b40c6640555aa470fa5e29cd0de0a (patch) | |
tree | 6b7b67dda655619fdcede126f39bedd2314a4318 /src/libsync | |
parent | 81275b5e94860634eb6a126f2cc7aa33846d4131 (diff) |
Improve the cookie stuff
Diffstat (limited to 'src/libsync')
-rw-r--r-- | src/libsync/accessmanager.cpp | 7 | ||||
-rw-r--r-- | src/libsync/accessmanager.h | 3 | ||||
-rw-r--r-- | src/libsync/account.cpp | 5 | ||||
-rw-r--r-- | src/libsync/cookiejar.cpp | 33 | ||||
-rw-r--r-- | src/libsync/cookiejar.h | 10 |
5 files changed, 12 insertions, 46 deletions
diff --git a/src/libsync/accessmanager.cpp b/src/libsync/accessmanager.cpp index aa4db4cba..2b11558a6 100644 --- a/src/libsync/accessmanager.cpp +++ b/src/libsync/accessmanager.cpp @@ -114,4 +114,11 @@ void AccessManager::addCustomTrustedCaCertificates(const QList<QSslCertificate> clearConnectionCache(); } +CookieJar *AccessManager::ownCloudCookieJar() const +{ + auto jar = qobject_cast<CookieJar *>(cookieJar()); + Q_ASSERT(jar); + return jar; +} + } // namespace OCC diff --git a/src/libsync/accessmanager.h b/src/libsync/accessmanager.h index 30e6ed389..97d75f228 100644 --- a/src/libsync/accessmanager.h +++ b/src/libsync/accessmanager.h @@ -22,6 +22,7 @@ class QByteArray; class QUrl; namespace OCC { +class CookieJar; /** * @brief The AccessManager class @@ -47,6 +48,8 @@ public: */ void addCustomTrustedCaCertificates(const QList<QSslCertificate> &certificates); + CookieJar *ownCloudCookieJar() const; + protected: QNetworkReply *createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData = nullptr) override; diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index e11c9f3a3..0b5c69046 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -193,10 +193,9 @@ QUrl Account::davUrl() const */ void Account::clearCookieJar() { - auto jar = qobject_cast<CookieJar *>(_am->cookieJar()); - OC_ASSERT(jar); qCInfo(lcAccount) << "Clearing cookies"; - jar->setAllCookies(QList<QNetworkCookie>()); + _am->cookieJar()->deleteLater(); + _am->setCookieJar(new CookieJar); } AccessManager *Account::accessManager() diff --git a/src/libsync/cookiejar.cpp b/src/libsync/cookiejar.cpp index 72d3f4cbb..1ff1faec0 100644 --- a/src/libsync/cookiejar.cpp +++ b/src/libsync/cookiejar.cpp @@ -36,37 +36,4 @@ CookieJar::~CookieJar() { } -bool CookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url) -{ - if (QNetworkCookieJar::setCookiesFromUrl(cookieList, url)) { - Q_EMIT newCookiesForUrl(cookieList, url); - return true; - } - - return false; -} - -QList<QNetworkCookie> CookieJar::cookiesForUrl(const QUrl &url) const -{ - QList<QNetworkCookie> cookies = QNetworkCookieJar::cookiesForUrl(url); - qCDebug(lcCookieJar) << url << "requests:" << cookies; - return cookies; -} - -void CookieJar::clearSessionCookies() -{ - setAllCookies(removeExpired(allCookies())); -} - -QList<QNetworkCookie> CookieJar::removeExpired(const QList<QNetworkCookie> &cookies) -{ - QList<QNetworkCookie> updatedList; - for (const auto &cookie : cookies) { - if (cookie.expirationDate() > QDateTime::currentDateTimeUtc() && !cookie.isSessionCookie()) { - updatedList << cookie; - } - } - return updatedList; -} - } // namespace OCC diff --git a/src/libsync/cookiejar.h b/src/libsync/cookiejar.h index 2346f1b4a..ca9908d32 100644 --- a/src/libsync/cookiejar.h +++ b/src/libsync/cookiejar.h @@ -31,19 +31,9 @@ class OWNCLOUDSYNC_EXPORT CookieJar : public QNetworkCookieJar public: explicit CookieJar(QObject *parent = nullptr); ~CookieJar() override; - bool setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url) override; - QList<QNetworkCookie> cookiesForUrl(const QUrl &url) const override; - - void clearSessionCookies(); using QNetworkCookieJar::setAllCookies; using QNetworkCookieJar::allCookies; - -signals: - void newCookiesForUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url); - -private: - QList<QNetworkCookie> removeExpired(const QList<QNetworkCookie> &cookies); }; } // namespace OCC |