aboutsummaryrefslogtreecommitdiff
path: root/src/webengine/cookieinterceptor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/webengine/cookieinterceptor.cpp')
-rw-r--r--src/webengine/cookieinterceptor.cpp34
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());
+ }
+}