#include "PassphrasePage.h" #include "Poco/Net/HTTPServerRequest.h" #include "Poco/Net/HTTPServerResponse.h" #include "Poco/Net/HTMLForm.h" #include "Poco/DeflatingStream.h" #line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" #include "../SingletonManager/SessionManager.h" #include "../SingletonManager/LanguageManager.h" #include "../Crypto/KeyPair.h" #include "../ServerConfig.h" //#include "Poco/Net/HTTPServerParams.h" enum PageState { PAGE_ASK_PASSPHRASE, PAGE_SHOW_PASSPHRASE, PAGE_ASK_ENSURE_PASSPHRASE, PAGE_FORCE_ASK_PASSPHRASE }; #line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" #include "../ServerConfig.h" PassphrasePage::PassphrasePage(Session* arg): SessionHTTPRequestHandler(arg) { } void PassphrasePage::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 22 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" chooseLanguage(request); const char* pageName = gettext("Passphrase"); std::string pageTitle = gettext("Neues Konto anlegen"); std::string pageSubtitle = gettext("2/3"); PageState state = PAGE_ASK_PASSPHRASE; // variable needed for flags auto lang = mSession->getLanguage(); auto sm = SessionManager::getInstance(); auto lm = LanguageManager::getInstance(); auto uri_start = ServerConfig::g_serverPath;//request.serverParams().getServerName(); //Mnemonic* wordSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER]; Mnemonic* wordSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER]; if(lang == LANG_DE) { wordSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER]; } // remove old cookies if exist sm->deleteLoginCookies(request, response, mSession); // save login cookie, because maybe we've get an new session response.addCookie(mSession->getLoginCookie()); if(mSession->getSessionState() == SESSION_STATE_RESET_PASSWORD_REQUEST) { state = PAGE_FORCE_ASK_PASSPHRASE; } if (!form.empty()) { auto btnNext = form.get("nextEnsure", ""); auto btnChecked = form.get("btnChecked", ""); auto langBtn = form.get("lang", ""); if(btnChecked != "") { mSession->updateState(SESSION_STATE_PASSPHRASE_SHOWN); response.redirect(ServerConfig::g_serverPath + "/passphrase"); return; } if(btnNext != "") { state = PAGE_ASK_ENSURE_PASSPHRASE; } else if(langBtn == "") { auto registerKeyChoice = form.get("passphrase", "no"); std::string oldPassphrase = ""; if (registerKeyChoice == "no") { auto oldPassphrase = KeyPair::filterPassphrase(form.get("passphrase-existing", "")); if(oldPassphrase != "") { if (User::validatePassphrase(oldPassphrase, &wordSource)) { // passphrase is valid if(PAGE_FORCE_ASK_PASSPHRASE == state) { auto compareResult = mSession->comparePassphraseWithSavedKeys(oldPassphrase, wordSource); if(-2 == compareResult) { response.redirect(ServerConfig::g_serverPath + "/error500"); return; } else if(1 == compareResult) { response.redirect(ServerConfig::g_serverPath + "/updateUserPassword"); return; } } else { mSession->setPassphrase(oldPassphrase); mSession->updateState(SESSION_STATE_PASSPHRASE_SHOWN); response.redirect(ServerConfig::g_serverPath + "/saveKeys"); return; //state = PAGE_SHOW_PASSPHRASE; } } else { addError(new Error(gettext("Passphrase"), gettext("Diese Passphrase ist ungültig, bitte überprüfen oder neu generieren (lassen).")), false); } } } else if (registerKeyChoice == "yes") { mSession->generatePassphrase(); } } } // double check passphrase auto passphrase = mSession->getOldPassphrase(); auto langWordSource = wordSource; if("" != passphrase && !User::validatePassphrase(passphrase, &wordSource)) { addError(new Error("PassphrasePage", "Invalid Passphrase after double check")); addError(new ParamError("PassphrasePage", "passphrase", passphrase.data())); if(!mSession->getNewUser().isNull()) { addError(new ParamError("PassphrasePage", "user email", mSession->getNewUser()->getModel()->getEmail())); } sendErrorsAsEmail(); addError(new Error(gettext("Passphrase"), gettext("intern error please try again later")), false); //response.redirect(ServerConfig::g_serverPath + "/error500"); //return; } //printf("wordSource: %d, langWordSource: %d\n", (int)wordSource, (int)langWordSource); if(wordSource != langWordSource) { mSession->generatePassphrase(); User::validatePassphrase(passphrase, &wordSource); } if(mSession->getSessionState() == SESSION_STATE_PASSPHRASE_GENERATED && state != PAGE_ASK_ENSURE_PASSPHRASE) { state = PAGE_SHOW_PASSPHRASE; //mSession->updateState(SESSION_STATE_PASSPHRASE_SHOWN); } if(state == PAGE_ASK_ENSURE_PASSPHRASE) { pageSubtitle = gettext("3/3"); } else if(state == PAGE_ASK_PASSPHRASE) { pageSubtitle = gettext("1/3"); } else if(state == PAGE_FORCE_ASK_PASSPHRASE) { pageTitle = gettext("Neues Passwort anlegen"); pageSubtitle = gettext("1/3"); } getErrors(mSession); #line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" bool withMaterialIcons = false; #line 138 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" withMaterialIcons = true; std::ostream& _responseStream = response.send(); Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; responseStream << "\n"; // begin include login_header.cpsp // 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_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); responseStream << "\n"; responseStream << "\n"; #line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" if(withMaterialIcons) { responseStream << "\n"; responseStream << "\n"; #line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" } responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " "; // end include header.cpsp responseStream << "\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " "; #line 18 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\n"; responseStream << "
\n"; responseStream << "
"; // end include login_header.cpsp responseStream << "\n"; #line 139 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" if(state == PAGE_ASK_ENSURE_PASSPHRASE) { responseStream << "
"; #line 139 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" } responseStream << "\n"; responseStream << "\t"; // begin include flags.cpsp responseStream << "
\n"; responseStream << "
\n"; responseStream << "\t\n"; responseStream << "\t\n"; responseStream << "
\n"; responseStream << "
"; // end include flags.cpsp responseStream << "\n"; #line 141 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" if(state == PAGE_ASK_ENSURE_PASSPHRASE) { responseStream << "
"; #line 141 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" } responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

"; #line 143 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( pageTitle ); responseStream << ": "; #line 143 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( pageSubtitle ); responseStream << "

\n"; responseStream << "\t"; #line 144 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" if(state == PAGE_SHOW_PASSPHRASE) { responseStream << "\n"; responseStream << "\t\t

"; #line 145 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Passphrase abschreiben") ); responseStream << "

\n"; responseStream << "\t"; #line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" } responseStream << "\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "\t
\n"; responseStream << "\t"; #line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" if(state == PAGE_SHOW_PASSPHRASE) { responseStream << "\n"; responseStream << "\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t
"; #line 156 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Was ist eine Passphrase?") ); responseStream << "
\n"; responseStream << "\t\t\t\t

"; #line 157 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Deine Passphrase besteht aus den im grünen Feld angezeigten Wörtern.") ); responseStream << "

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

"; #line 158 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Sie dient deiner Sicherheit.") ); responseStream << "

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

"; #line 159 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Du brauchst deine Passphrase um dein Konto wiederherzustellen, wenn du mal dein Passwort vergessen haben solltest.") ); responseStream << "

\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t
"; #line 161 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Deine Passphrase (Groß/Kleinschreibung beachten)") ); responseStream << ":
\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t

"; #line 163 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( mSession->getPassphrase() ); responseStream << "

\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t
"; #line 166 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Was zu tun ist:") ); responseStream << "
\n"; responseStream << "\t\t\t\t

"; #line 167 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Schreibe dir die obenstehende Passphrase von Hand auf ein Blatt Papier!") ); responseStream << "

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

"; #line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Speichere sie auf keinen Fall auf deinem Rechner oder Mobilgerät!!") ); responseStream << "

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

"; #line 169 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Bewahre sie an einem sicheren Ort auf!") ); responseStream << "

\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t
\n"; responseStream << "\t "; #line 176 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" } else if(state == PAGE_ASK_ENSURE_PASSPHRASE) { responseStream << "\n"; responseStream << "\t \n"; responseStream << "\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\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\t
"; #line 194 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Was zu tun ist:") ); responseStream << "
\n"; responseStream << "\t\t\t\t\t\t\t

"; #line 195 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Hast du dir deine Passphrase gemerkt?") ); responseStream << "

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

"; #line 196 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Dann zeig es mir. Zur Unterstützung gebe ich dir deine Wörter aber in anderer Reihenfolge.") ); responseStream << "

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

"; #line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Klicke sie an um sie einzusetzen.") ); responseStream << "

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

"; #line 198 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Überprüfe dabei, ob du alle Wörter richtig geschrieben hast!") ); responseStream << "

\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
\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\n"; responseStream << "\t\t\n"; responseStream << "\t "; #line 219 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" } else if(state == PAGE_ASK_PASSPHRASE) { responseStream << "\n"; responseStream << "\t \n"; responseStream << "\t \n"; responseStream << " \n"; responseStream << "\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t

"; #line 249 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Deine E-Mail Adresse wurde erfolgreich bestätigt.") ); responseStream << "

\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t
"; #line 253 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Neue Gradido Adresse anlegen / wiederherstellen") ); responseStream << "
\n"; responseStream << "\t\t\t\t

"; #line 254 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Möchtest du ein neues Gradido-Konto anlegen oder ein bestehendes wiederherstellen?") ); responseStream << "

\n"; responseStream << "\t\t\t\t \n"; responseStream << "\t\t\t\t
\n"; responseStream << "\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\t
\n"; responseStream << "\t\t\t\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t\t\t
\n"; responseStream << "\t\t\t\t\t\t\t\t\n"; responseStream << "\t\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\t\n"; responseStream << "\t\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
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t \n"; responseStream << "\t\t
\n"; responseStream << "\t
\n"; responseStream << "\t "; #line 290 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" } else if(state == PAGE_FORCE_ASK_PASSPHRASE) { responseStream << "\n"; responseStream << "\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t
"; #line 294 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Konto wiederherstellen / Neues Passwort anlegen") ); responseStream << "
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t

"; #line 296 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Um dein Konto wiederherzustellen und dir ein Neues Passwort auswählen zu können, tippe hier bitte die Wörter deiner Passphrase in der richtigen Reihenfolge ein, welche du dir aufgeschrieben hast.") ); responseStream << "

\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t
\n"; responseStream << "\t "; #line 305 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" } else { responseStream << "\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t
"; #line 310 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Fehler") ); responseStream << "
\n"; responseStream << "\t\t\t\t

"; #line 311 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende dich an den Server-Admin.") ); responseStream << "

\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t "; #line 316 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" } responseStream << "\n"; responseStream << "\t
\n"; responseStream << "
\n"; // begin include footer_ripple.cpsp responseStream << "\t\t\t
\n"; responseStream << "\t\t
\n"; responseStream << " \n"; responseStream << " \n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " Copyright © 2020 Gradido\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " "; #line 23 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer_ripple.cpsp" responseStream << ( mTimeProfiler.string() ); responseStream << "\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << " \n"; responseStream << "\n"; responseStream << " "; // end include footer_ripple.cpsp responseStream << "\n"; if (_compressResponse) _gzipStream.close(); }