mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
fix crash with sessions with empty user, skip elopage webhook logic
This commit is contained in:
parent
b4c0d6b062
commit
b6c2cc94a5
@ -33,6 +33,10 @@ void ElopageWebhook::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
std::ostream& _responseStream = response.send();
|
||||
_responseStream << "200 OK";
|
||||
|
||||
// don't use it anymore, register now direct
|
||||
// elopage request are only logged from gpt server
|
||||
return;
|
||||
|
||||
std::istream& stream = request.stream();
|
||||
std::string completeRequest;
|
||||
Poco::Net::NameValueCollection elopageRequestData;
|
||||
|
||||
@ -19,6 +19,10 @@ void ElopageWebhookLight::handleRequest(Poco::Net::HTTPServerRequest& request, P
|
||||
std::ostream& _responseStream = response.send();
|
||||
_responseStream << "200 OK";
|
||||
|
||||
// don't use it anymore, register now direct
|
||||
// elopage request are only logged from gpt server
|
||||
return;
|
||||
|
||||
std::istream& stream = request.stream();
|
||||
std::string completeRequest;
|
||||
Poco::Net::NameValueCollection elopageRequestData;
|
||||
|
||||
@ -115,12 +115,13 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
|
||||
return handleCheckEmail(s, uri, request, timeUsed);
|
||||
}
|
||||
}
|
||||
if (url_first_part == "/register") {
|
||||
/*if (url_first_part == "/register") {
|
||||
auto pageRequestHandler = new RegisterPage;
|
||||
pageRequestHandler->setProfiler(timeUsed);
|
||||
return pageRequestHandler;
|
||||
}
|
||||
if (url_first_part == "/registerDirect") {
|
||||
}*/
|
||||
if (url_first_part.size() >= 9 && url_first_part.substr(0,9) == "/register") {
|
||||
//if (url_first_part == "/register" || url_first_part == "/registerDirect" ) {
|
||||
auto pageRequestHandler = new RegisterDirectPage;
|
||||
pageRequestHandler->setProfiler(timeUsed);
|
||||
return pageRequestHandler;
|
||||
@ -146,11 +147,17 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
|
||||
if (externReferer != "") {
|
||||
s->setLastReferer(externReferer);
|
||||
}
|
||||
model::table::User* userModel = nullptr;
|
||||
auto user = s->getUser();
|
||||
if (s->errorCount() || (!user.isNull() && user->errorCount())) {
|
||||
auto newUser = s->getNewUser();
|
||||
if (newUser) userModel = newUser->getModel();
|
||||
if (s->errorCount() || (!user.isNull() && user->errorCount()) || (userModel && userModel->errorCount())) {
|
||||
if (!user.isNull() && user->errorCount()) {
|
||||
s->getErrors(user);
|
||||
}
|
||||
if (userModel && userModel->errorCount()) {
|
||||
s->getErrors(userModel);
|
||||
}
|
||||
s->sendErrorsAsEmail();
|
||||
auto pageRequestHandler = new Error500Page(s);
|
||||
pageRequestHandler->setProfiler(timeUsed);
|
||||
@ -171,7 +178,7 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
|
||||
pageRequestHandler->setProfiler(timeUsed);
|
||||
return pageRequestHandler;
|
||||
}
|
||||
if (s->getNewUser()->getModel()->getRole() == model::table::ROLE_ADMIN) {
|
||||
if (userModel && userModel->getRole() == model::table::ROLE_ADMIN) {
|
||||
if (url_first_part == "/adminRegister") {
|
||||
auto pageRequestHandler = new RegisterAdminPage(s);
|
||||
pageRequestHandler->setProfiler(timeUsed);
|
||||
@ -229,7 +236,7 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
|
||||
return pageRequestHandler;
|
||||
|
||||
}
|
||||
if (s && !user.isNull() && user->hasCryptoKey()) {
|
||||
if(s && newUser && newUser->hasPassword() && newUser->hasPublicKey()) {
|
||||
//printf("[PageRequestHandlerFactory] go to dashboard page with user\n");
|
||||
auto pageRequestHandler = new DashboardPage(s);
|
||||
pageRequestHandler->setProfiler(timeUsed);
|
||||
|
||||
@ -73,6 +73,13 @@ namespace controller {
|
||||
std::shared_lock<std::shared_mutex> _lock(mSharedMutex);
|
||||
return mPassword;
|
||||
}
|
||||
inline bool hasPassword() {
|
||||
std::shared_lock<std::shared_mutex> _lock(mSharedMutex);
|
||||
return mPassword;
|
||||
}
|
||||
inline bool hasPublicKey() {
|
||||
return getModel()->getPublicKey();
|
||||
}
|
||||
//! \brief set key pair, public in model, private if password exist else with next setPassword call into model
|
||||
//! \param gradidoKeyPair take owner ship
|
||||
//! \param return 0 if public key set
|
||||
|
||||
@ -31,8 +31,13 @@
|
||||
form.get("register-email", ""),
|
||||
form.get("register-password", "")
|
||||
);
|
||||
|
||||
getErrors(session);
|
||||
|
||||
if(!errorCount()) {
|
||||
auto user_host = request.clientAddress().host();
|
||||
session->setClientIp(user_host);
|
||||
response.addCookie(session->getLoginCookie());
|
||||
response.redirect(ServerConfig::g_php_serverPath + "/");
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user