mirror of https://github.com/Nheko-Reborn/nheko
parent
813790e603
commit
7b1fa60cc6
@ -0,0 +1,54 @@ |
|||||||
|
#include "SSOHandler.h" |
||||||
|
|
||||||
|
#include <QTimer> |
||||||
|
|
||||||
|
#include <thread> |
||||||
|
|
||||||
|
#include "Logging.h" |
||||||
|
|
||||||
|
SSOHandler::SSOHandler(QObject *) |
||||||
|
{ |
||||||
|
QTimer::singleShot(120000, this, &SSOHandler::ssoFailed); |
||||||
|
|
||||||
|
using namespace httplib; |
||||||
|
|
||||||
|
svr.set_logger([](const Request &req, const Response &res) { |
||||||
|
nhlog::net()->info("req: {}, res: {}", req.path, res.status); |
||||||
|
}); |
||||||
|
|
||||||
|
svr.Get("/sso", [this](const Request &req, Response &res) { |
||||||
|
if (req.has_param("loginToken")) { |
||||||
|
auto val = req.get_param_value("loginToken"); |
||||||
|
res.set_content("SSO success", "text/plain"); |
||||||
|
emit ssoSuccess(val); |
||||||
|
} else { |
||||||
|
res.set_content("Missing loginToken for SSO login!", "text/plain"); |
||||||
|
emit ssoFailed(); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
std::thread t([this]() { |
||||||
|
this->port = svr.bind_to_any_port("localhost"); |
||||||
|
svr.listen_after_bind(); |
||||||
|
|
||||||
|
}); |
||||||
|
t.detach(); |
||||||
|
|
||||||
|
while (!svr.is_running()) { |
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
SSOHandler::~SSOHandler() |
||||||
|
{ |
||||||
|
svr.stop(); |
||||||
|
while (svr.is_running()) { |
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
std::string |
||||||
|
SSOHandler::url() const |
||||||
|
{ |
||||||
|
return "http://localhost:" + std::to_string(port) + "/sso"; |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
#include "httplib.h" |
||||||
|
|
||||||
|
#include <QObject> |
||||||
|
#include <string> |
||||||
|
|
||||||
|
class SSOHandler : public QObject |
||||||
|
{ |
||||||
|
Q_OBJECT |
||||||
|
|
||||||
|
public: |
||||||
|
SSOHandler(QObject *parent = nullptr); |
||||||
|
|
||||||
|
~SSOHandler(); |
||||||
|
|
||||||
|
std::string url() const; |
||||||
|
|
||||||
|
signals: |
||||||
|
void ssoSuccess(std::string token); |
||||||
|
void ssoFailed(); |
||||||
|
|
||||||
|
private: |
||||||
|
httplib::Server svr; |
||||||
|
int port = 0; |
||||||
|
}; |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue