diff options
Diffstat (limited to 'src/webengine/cookieinterceptor.cpp')
-rw-r--r-- | src/webengine/cookieinterceptor.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/webengine/cookieinterceptor.cpp b/src/webengine/cookieinterceptor.cpp new file mode 100644 index 0000000..88cc475 --- /dev/null +++ b/src/webengine/cookieinterceptor.cpp @@ -0,0 +1,34 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: git://neueland.iserlohn-fortress.net/smolbote.git + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#include "cookieinterceptor.h" +#include <QDateTime> +#include <QWebEngineCookieStore> + +CookieInterceptor::CookieInterceptor(const QString &path, QObject *parent) + : QObject(parent) +{ +} + +void CookieInterceptor::judgeCookie(const QNetworkCookie &cookie) { + QWebEngineCookieStore *store = dynamic_cast<QWebEngineCookieStore *>(sender()); + Q_CHECK_PTR(store); + + qDebug("Added cookie %s::%s", qUtf8Printable(cookie.domain()), qUtf8Printable(cookie.name())); + + // A session cookie is a cookie which has no expiration date, which means it should be discarded when + // the application's concept of session is over (usually, when the application exits) + if(!cookie.isSessionCookie()) { + QNetworkCookie copyCookie(cookie); + copyCookie.setExpirationDate(QDateTime::fromString("")); + qDebug("cookie is now session?: %s", copyCookie.isSessionCookie() ? "yes" : "no"); + + store->deleteCookie(cookie, cookie.domain()); + store->setCookie(copyCookie, copyCookie.domain()); + } +} |