aboutsummaryrefslogtreecommitdiff
path: root/src/webengine/cookieinterceptor.cpp
blob: e1a7d6baf1208c2bf967b5da59dfffc9631e9cb1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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: https://neueland.iserlohn-fortress.net/smolbote.hg
 *
 * 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());
    }
}