1
0
Fork 0
mirror of https://gitlab.com/niansa/qcommsy.git synced 2025-03-06 20:53:33 +01:00

Fixed flow

This commit is contained in:
niansa 2020-08-16 13:18:22 +02:00
parent 6f2f703c9e
commit 702d79d9e6
2 changed files with 35 additions and 32 deletions

View file

@ -20,29 +20,34 @@ class libCommsyAuth : public QObject {
public: public:
Q_SIGNALS: Q_SIGNALS:
void reEmit(QNetworkReply *r); void connectionDone(QNetworkReply *r);
void authDone(QNetworkReply *r);
public: public:
QNetworkAccessManager *mNetManTestconn = nullptr;
QNetworkAccessManager *mNetManAuth = nullptr;
QNetworkRequest *mNetReq = nullptr;
explicit libCommsyAuth(QObject *p = nullptr) : QObject (p){ explicit libCommsyAuth(QObject *p = nullptr) : QObject (p){
mNetMan = new QNetworkAccessManager(this); mNetManTestconn = new QNetworkAccessManager(this);
mNetManAuth = new QNetworkAccessManager(this);
mNetReq = new QNetworkRequest(); mNetReq = new QNetworkRequest();
connect(mNetMan, &QNetworkAccessManager::finished, this, &libCommsyAuth::reEmit); connect(mNetManTestconn, &QNetworkAccessManager::finished, this, &libCommsyAuth::connectionDone);
connect(mNetManAuth, &QNetworkAccessManager::finished, this, &libCommsyAuth::authDone);
} }
~libCommsyAuth() { ~libCommsyAuth() {
delete mNetMan; delete mNetManTestconn;
delete mNetManAuth;
delete mNetReq; delete mNetReq;
} }
QNetworkAccessManager *mNetMan = nullptr; void connectionInit(const QUrl& serverBaseUrl) {
QNetworkRequest *mNetReq = nullptr;
void connectInit(const QUrl& serverBaseUrl) {
// Initialise request // Initialise request
//mNetReq->setTransferTimeout(15000); //mNetReq->setTransferTimeout(15000);
mNetReq->setUrl(serverBaseUrl); mNetReq->setUrl(serverBaseUrl);
mNetReq->setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); mNetReq->setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
mNetMan->get(*mNetReq); mNetManTestconn->get(*mNetReq);
} }
QString getAuthUrl(const QNetworkReply *reply) { QString getAuthUrl(const QNetworkReply *reply) {
@ -61,7 +66,7 @@ public:
mNetReq->setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); mNetReq->setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
// Perform the request // Perform the request
mNetMan->post(*mNetReq, mNetQuery.toString(QUrl::FullyEncoded).toUtf8()); mNetManAuth->post(*mNetReq, mNetQuery.toString(QUrl::FullyEncoded).toUtf8());
} }
QString getSID(QNetworkReply *reply) { QString getSID(QNetworkReply *reply) {

View file

@ -135,6 +135,25 @@ void _UILoader::loginWindow(QMainWindow *w, const QString& failure) {
// Set failure text // Set failure text
thisui->failureText->setText(failure); thisui->failureText->setText(failure);
// Connect connection handlers
w->connect(auther, &libCommsyAuth::authDone, [this, thisui, w] (QNetworkReply *netReply) {
// Login
try {
settings->setValue("server_sid", auther->getSID(netReply));
cacheInvalidate = true;
overviewWindow(w, false);
} catch (authFailureError&) {
thisui->failureText->setText("Die eingegebenen Anmeldedaten sind ungültig");
} catch (invalidRoomError&) {
thisui->failureText->setText("Der angegebene Raum existiert nicht");
}
});
w->connect(auther, &libCommsyAuth::connectionDone, [this, thisui, w] (QNetworkReply *netReply) {
QString authUrl = auther->getAuthUrl(netReply);
auther->sendAuth(authUrl, thisui->usernameLine->text(), thisui->passwordLine->text());
});
// Add button handlers // Add button handlers
w->connect(thisui->loginButton, &QPushButton::pressed, [this, thisui, w] () { w->connect(thisui->loginButton, &QPushButton::pressed, [this, thisui, w] () {
// Check input lines // Check input lines
@ -148,28 +167,7 @@ void _UILoader::loginWindow(QMainWindow *w, const QString& failure) {
settings->setValue("server_room", thisui->roomLine->text()); settings->setValue("server_room", thisui->roomLine->text());
// Connect // Connect
w->connect(auther, &libCommsyAuth::reEmit, [this, thisui, w] (QNetworkReply *netReply) { auther->connectionInit(thisui->adressLine->text());
auther->disconnect();
w->connect(auther, &libCommsyAuth::reEmit, [this, thisui, w] (QNetworkReply *netReply) {
auther->disconnect();
// Login
try {
settings->setValue("server_sid", auther->getSID(netReply));
cacheInvalidate = true;
overviewWindow(w, false);
} catch (authFailureError&) {
thisui->failureText->setText("Die eingegebenen Anmeldedaten sind ungültig");
} catch (invalidRoomError&) {
thisui->failureText->setText("Der angegebene Raum existiert nicht");
}
});
auther->sendAuth(auther->getAuthUrl(netReply), thisui->usernameLine->text(), thisui->passwordLine->text());
});
auther->connectInit(thisui->adressLine->text());
}); });
} }