#include "ResetPassword.h" #include "Poco/Net/HTTPServerRequest.h" #include "Poco/Net/HTTPServerResponse.h" #include "Poco/Net/HTMLForm.h" #include "Poco/DeflatingStream.h" #line 6 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" #include "../SingletonManager/LanguageManager.h" #include "../SingletonManager/SessionManager.h" #include "../SingletonManager/EmailManager.h" #include "../controller/User.h" #include "../controller/UserBackup.h" enum PageState { PAGE_EMAIL_ASK, PAGE_ASK, PAGE_WAIT_EMAIL, PAGE_WAIT_ADMIN, PAGE_EMAIL_ALREADY_SEND }; #line 1 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\header.cpsp" #include "../ServerConfig.h" void ResetPassword::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) { response.setChunkedTransferEncoding(true); response.setContentType("text/html"); bool _compressResponse(request.hasToken("Accept-Encoding", "gzip")); if (_compressResponse) response.set("Content-Encoding", "gzip"); Poco::Net::HTMLForm form(request, request.stream()); #line 20 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" PageState state = PAGE_EMAIL_ASK; auto lm = LanguageManager::getInstance(); auto sm = SessionManager::getInstance(); auto adminReceiver = EmailManager::getInstance()->getAdminReceiver(); const char* pageName = "Passwort vergessen"; auto lang = chooseLanguage(request); // class="btn btn-outline-secondary flag-btn" // class="btn btn-secondary disabled flag-btn" disabled std::string eng_btn_classes = ""; std::string de_btn_classes = ""; auto langCatalog = lm->getFreeCatalog(lang); std::string emailInputClass = "form-control"; std::string passphraseRadioClass = "group"; std::string email = ""; if(!form.empty()) { auto session = sm->getNewSession(); email = form.get("email", ""); auto passphraseMemorized = form.get("passphrase_memorized", ""); auto user = controller::User::create(); auto ask = form.get("ask_passphrase", ""); if(email != "") { bool user_exist = false; bool sendUserEmail = false; if(!sm->isValid(email, VALIDATE_EMAIL)) { addError(new Error(gettext(session, "E-Mail"), gettext(session, "Das ist keine gültige E-Mail Adresse")), false); emailInputClass += " is-invalid"; } user_exist = user->load(email) == 1; if(ask == "true") { if(passphraseMemorized == "") { addError(new Error(gettext(session, "Passphrase"), gettext(session, "Bitte wähle eine Option aus.")), false); passphraseRadioClass += " group-is-invalid"; } else if(passphraseMemorized == "true") { sendUserEmail = true; } } else { if(user_exist && (!user->tryLoadPassphraseUserBackup() || !user->hasPublicKey())) { sendUserEmail = true; } } if(!errorCount()) { // send reset password email int result = 0; if(user_exist) { result = session->sendResetPasswordEmail(user, sendUserEmail, ServerConfig::g_serverPath + "/checkEmail"); } if(2 == result) { state = PAGE_EMAIL_ALREADY_SEND; } else if(sendUserEmail) { state = PAGE_WAIT_EMAIL; } else { state = PAGE_WAIT_ADMIN; } } } else { addError(new Error(gettext(session, "E-Mail"), gettext(session, "E-Mail Adresse nicht angegeben.")), false); emailInputClass += " is-invalid"; } } #line 3 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\header.cpsp" bool withMaterialIcons = false; std::ostream& _responseStream = response.send(); Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; responseStream << "\n"; // begin include header.cpsp responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "Gradido Login Server: "; #line 11 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); responseStream << "\n"; responseStream << "\n"; #line 13 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\header.cpsp" if(withMaterialIcons) { responseStream << "\n"; responseStream << "\n"; #line 15 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\header.cpsp" } responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " "; // end include header.cpsp responseStream << "\n"; responseStream << " "; #line 103 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\n"; responseStream << "\t
\n"; responseStream << "\t
\n"; responseStream << "\t

Passwort zurücksetzen

\n"; responseStream << "\t
\n"; responseStream << " "; #line 108 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" if(state == PAGE_EMAIL_ASK) { responseStream << "\n"; responseStream << "
\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t \n"; responseStream << "\t\t\t\t\t
\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t"; #line 120 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" } else if(state == PAGE_ASK) { responseStream << "\n"; responseStream << "
\n"; responseStream << "\t\t\t\t"; // begin include flags.cpsp responseStream << "
\n"; responseStream << "
\n"; responseStream << "\t\n"; responseStream << "\t\n"; responseStream << "
\n"; responseStream << "
"; // end include flags.cpsp responseStream << "\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t\t \n"; responseStream << "\t\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t\t \n"; responseStream << "\t\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t \n"; responseStream << "\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t
\n"; responseStream << "\t "; #line 144 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" } else if(state == PAGE_WAIT_EMAIL) { responseStream << "\n"; responseStream << "\t\t\t"; #line 145 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" responseStream << ( langCatalog->gettext("Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen.") ); responseStream << "\n"; responseStream << "\t "; #line 146 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" } else if(state == PAGE_WAIT_ADMIN) { responseStream << "\n"; responseStream << "\t\t\t"; #line 147 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" responseStream << ( langCatalog->gettext("Der Admin hat eine E-Mail bekommen und wird sich bei dir melden.") ); responseStream << "\n"; responseStream << "\t "; #line 148 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" } else if(state == PAGE_EMAIL_ALREADY_SEND) { responseStream << "\n"; responseStream << "\t\t\t

"; #line 149 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" responseStream << ( langCatalog->gettext("Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-Verzeichnis nach. ") ); responseStream << "

\n"; responseStream << "\t\t\t

"; #line 150 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" responseStream << ( langCatalog->gettext("Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten gewartet?") ); responseStream << "

\n"; responseStream << "\t\t\t

"; #line 151 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" responseStream << ( langCatalog->gettext("E-Mail an Support schicken")); responseStream << "

\n"; responseStream << "\t "; #line 152 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp" } responseStream << "\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << "\t\n"; // begin include footer.cpsp responseStream << "
\n"; responseStream << "

Copyright © Gradido 2020

\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "
\n"; responseStream << " "; #line 6 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\footer.cpsp" responseStream << ( mTimeProfiler.string() ); responseStream << "\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "

Login Server in Entwicklung

\n"; responseStream << "

Alpha "; #line 10 "F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\footer.cpsp" responseStream << ( ServerConfig::g_versionString ); responseStream << "

\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "\n"; responseStream << "\n"; responseStream << ""; // end include footer.cpsp responseStream << "\n"; if (_compressResponse) _gzipStream.close(); }