diff --git a/libcommsyauth.hpp b/libcommsyauth.hpp index 87354bc..d057b56 100644 --- a/libcommsyauth.hpp +++ b/libcommsyauth.hpp @@ -15,15 +15,20 @@ class authFailureError : public std::exception {}; class libCommsyAuth : QObject { public: + QNetworkAccessManager *mNetMan = nullptr; + QNetworkRequest *mNetReq = nullptr; + + libCommsyAuth() { + mNetMan = new QNetworkAccessManager(this); + mNetReq = new QNetworkRequest(); + } + QNetworkReply *connect(const QUrl& serverBaseUrl) { - // Initialise variables - QNetworkAccessManager mNetMan(this); - QNetworkRequest mNetReq; // Initialise request //mNetReq->setTransferTimeout(15000); - mNetReq.setUrl(serverBaseUrl); - mNetReq.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); - return mNetMan.get(mNetReq); + mNetReq->setUrl(serverBaseUrl); + mNetReq->setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); + return mNetMan->get(*mNetReq); } QString getAuthUrl(const QNetworkReply *reply) { @@ -31,23 +36,22 @@ public: } QNetworkReply *sendAuth(const QString& authUrl, const QString& username, const QString& password) { - QNetworkAccessManager mNetMan(this); - QNetworkRequest mNetReq; QUrlQuery mNetQuery; // Set auth credentials mNetQuery.addQueryItem("user_id", username); mNetQuery.addQueryItem("password", password); // Create request - mNetReq.setUrl(authUrl + "&mod=context&fct=login"); - mNetReq.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + mNetReq->setUrl(authUrl + "&mod=context&fct=login"); + mNetReq->setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); // Perform the request - return mNetMan.post(mNetReq, mNetQuery.toString(QUrl::FullyEncoded).toUtf8()); + return mNetMan->post(*mNetReq, mNetQuery.toString(QUrl::FullyEncoded).toUtf8()); } QString getSID(QNetworkReply *reply) { auto cookies = QNetworkCookie::parseCookies(reply->rawHeader("Set-Cookie")); for (const auto& cookie : cookies) { if (cookie.name() == "SID") { + std::cout << cookie.value().toStdString() << std::endl; return cookie.value(); } } diff --git a/login.ui b/login.ui index 648481d..33ac76d 100644 --- a/login.ui +++ b/login.ui @@ -91,7 +91,7 @@ QLineEdit::Password - SID + Passwort diff --git a/main.cpp b/main.cpp index fe64568..0be64e6 100644 --- a/main.cpp +++ b/main.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -137,13 +138,14 @@ void _UILoader::loginWindow(QMainWindow *w, const QString& failure) { settings->setValue("server_room", thisui->roomLine->text()); // Connect QNetworkReply *netReply = auther->connect(thisui->adressLine->text()); - w->connect(netReply, &QNetworkReply::readyRead, [this, thisui, w, &netReply] () { // SIGSEGV + w->connect(netReply, &QNetworkReply::finished, [this, thisui, w, netReply] () { // SIGSEGV + std::cout << auther->getAuthUrl(netReply).toStdString() << std::endl; // Get SID - netReply = auther->sendAuth(auther->getAuthUrl(netReply), thisui->usernameLine->text(), thisui->passwordLine->text()); - w->connect(netReply, &QNetworkReply::readyRead, [this, thisui, w, netReply] () { + QNetworkReply *netReply2 = auther->sendAuth(auther->getAuthUrl(netReply), thisui->usernameLine->text(), thisui->passwordLine->text()); + w->connect(netReply2, &QNetworkReply::readyRead, [this, thisui, w, netReply2] () { // Login try { - settings->setValue("server_sid", auther->getSID(netReply)); + settings->setValue("server_sid", auther->getSID(netReply2)); cacheInvalidate = true; overviewWindow(w, false); } catch (authFailureError&) {