diff --git a/src/cpp/HTTPInterface/ElopageWebhook.cpp b/src/cpp/HTTPInterface/ElopageWebhook.cpp index 06039b1b0..1cdcc5a85 100644 --- a/src/cpp/HTTPInterface/ElopageWebhook.cpp +++ b/src/cpp/HTTPInterface/ElopageWebhook.cpp @@ -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; diff --git a/src/cpp/HTTPInterface/ElopageWebhookLight.cpp b/src/cpp/HTTPInterface/ElopageWebhookLight.cpp index 99bbfc46d..c970e0a49 100644 --- a/src/cpp/HTTPInterface/ElopageWebhookLight.cpp +++ b/src/cpp/HTTPInterface/ElopageWebhookLight.cpp @@ -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; diff --git a/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp b/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp index d95f85706..e827a606e 100644 --- a/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp +++ b/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp @@ -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); diff --git a/src/cpp/controller/User.h b/src/cpp/controller/User.h index 6033c4e68..a7bcb96eb 100644 --- a/src/cpp/controller/User.h +++ b/src/cpp/controller/User.h @@ -73,6 +73,13 @@ namespace controller { std::shared_lock _lock(mSharedMutex); return mPassword; } + inline bool hasPassword() { + std::shared_lock _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 diff --git a/src/cpsp/registerDirect.cpsp b/src/cpsp/registerDirect.cpsp index 3ea850be4..60ffef104 100644 --- a/src/cpsp/registerDirect.cpsp +++ b/src/cpsp/registerDirect.cpsp @@ -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; }