#ifndef SAMLLOGINWINDOW_H #define SAMLLOGINWINDOW_H #include #include #include #include "enhancedwebview.h" class SAMLLoginWindow : public QDialog { Q_OBJECT public: explicit SAMLLoginWindow(QWidget *parent = nullptr); ~SAMLLoginWindow(); void login(const QString samlMethod, const QString samlRequest, const QString preloingUrl); signals: void success(QMap samlResult); void fail(const QString code, const QString msg); private slots: void onResponseReceived(QJsonObject params); void onLoadFinished(); void checkSamlResult(QString username, QString preloginCookie, QString userAuthCookie); private: static const auto MAX_WAIT_TIME { 10 * 1000 }; bool failed { false }; EnhancedWebView *webView; QMap samlResult; void closeEvent(QCloseEvent *event); void handleHtml(const QString &html); static QString parseTag(const QString &tag, const QString &html); }; #endif // SAMLLOGINWINDOW_H