Loading editor/src/webedit_server.cpp +42 −0 Original line number Diff line number Diff line Loading @@ -267,6 +267,48 @@ bool webedit::Server::isAuthenticated(const std::string &authid) { return false; } void webedit::Server::ensureSessionFromAuthid(const std::string &authid, const std::string &sessionid) { if (authid.empty() || _authPools.empty()) return; // Already hydrated for this editor session — nothing to do. std::string existing; _session.getData(sessionid, "authid", existing); if (!existing.empty()) return; uuid::uuid sid(authid.c_str()); const uuid::uuid loginGpoId("e7d3b8b3-4825-11f0-ae2b-3cecefce9cb6"); for (size_t i = 0; i < _authPools.size(); ++i) { try { auto pooled = _authPools[i]->acquire(); pooled.setSessionID(sid); if (!pooled.client().ClientAuth() || !pooled.client().GPOcheck(loginGpoId)) continue; authdb::SessionData sdat; pooled.client().SessionInfo(sdat); std::string displayname = sdat.getUsername(); uuid::uuid uid; sdat.getUid(uid); std::string uidStr = uid.c_str(); _session.addData(sessionid, "authid", authid); _session.addData(sessionid, "uid", uidStr); _session.addData(sessionid, "username", displayname); _session.addData(sessionid, "domain", _config.getAuthSource(i).domain); return; } catch (...) { continue; } } } void webedit::Server::handleLogin(libhttppp::HttpRequest &curreq, const std::string &sessionid) { if (_authPools.empty()) { Loading Loading
editor/src/webedit_server.cpp +42 −0 Original line number Diff line number Diff line Loading @@ -267,6 +267,48 @@ bool webedit::Server::isAuthenticated(const std::string &authid) { return false; } void webedit::Server::ensureSessionFromAuthid(const std::string &authid, const std::string &sessionid) { if (authid.empty() || _authPools.empty()) return; // Already hydrated for this editor session — nothing to do. std::string existing; _session.getData(sessionid, "authid", existing); if (!existing.empty()) return; uuid::uuid sid(authid.c_str()); const uuid::uuid loginGpoId("e7d3b8b3-4825-11f0-ae2b-3cecefce9cb6"); for (size_t i = 0; i < _authPools.size(); ++i) { try { auto pooled = _authPools[i]->acquire(); pooled.setSessionID(sid); if (!pooled.client().ClientAuth() || !pooled.client().GPOcheck(loginGpoId)) continue; authdb::SessionData sdat; pooled.client().SessionInfo(sdat); std::string displayname = sdat.getUsername(); uuid::uuid uid; sdat.getUid(uid); std::string uidStr = uid.c_str(); _session.addData(sessionid, "authid", authid); _session.addData(sessionid, "uid", uidStr); _session.addData(sessionid, "username", displayname); _session.addData(sessionid, "domain", _config.getAuthSource(i).domain); return; } catch (...) { continue; } } } void webedit::Server::handleLogin(libhttppp::HttpRequest &curreq, const std::string &sessionid) { if (_authPools.empty()) { Loading