From f25f28827639da3eb54f0e4a85174fe2cc777dcb Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Sat, 28 Jan 2023 22:57:03 +0100 Subject: add simple authentification for http sites --- sb.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/sb.cpp b/sb.cpp index 0823c4c..c4562b0 100644 --- a/sb.cpp +++ b/sb.cpp @@ -3,7 +3,9 @@ #include #include +#include #include +#include #include #include #include @@ -19,6 +21,8 @@ #include #include #include +#include +#include bool is_valid_url(const std::string & url); @@ -246,6 +250,46 @@ main(int argc, char **argv) { } }); + web->page()->connect(web->page(), &QWebEnginePage::authenticationRequired, [&](const QUrl &url, QAuthenticator *authenticator) { + QDialog dialog; + QVBoxLayout layout; + QLineEdit user; + QLineEdit password; + QPushButton ok; + QPushButton cancel; + + ok.setText("Ok"); + cancel.setText("Cancel"); + user.setPlaceholderText("Username"); + password.setPlaceholderText("Password"); + password.setEchoMode(QLineEdit::Password); + + dialog.setLayout(&layout); + layout.addWidget(&user); + layout.addWidget(&password); + layout.addWidget(&ok); + layout.addWidget(&cancel); + + dialog.connect(&dialog, &QDialog::finished, [&](int result) { + if (result == QDialog::Accepted) { + authenticator->setUser(user.text()); + authenticator->setPassword(password.text()); + } + dialog.close(); + }); + + ok.connect(&ok, &QPushButton::pressed, [&]() { + dialog.accept(); + }); + + cancel.connect(&cancel, &QPushButton::pressed, [&]() { + web->stop(); + dialog.reject(); + }); + + dialog.exec(); + }); + register_shortcuts(view); return app.exec(); -- cgit v1.2.3-70-g09d2