diff --git a/src/cpp/Crypto/mnemonic.cpp b/src/cpp/Crypto/mnemonic.cpp index 8b0ff84f8..9931a082b 100644 --- a/src/cpp/Crypto/mnemonic.cpp +++ b/src/cpp/Crypto/mnemonic.cpp @@ -125,3 +125,26 @@ std::string Mnemonic::getCompleteWordList() } return result; } + +void Mnemonic::printToFile(const char* filename) +{ + FILE* f = fopen(filename, "wt"); + auto words = getCompleteWordList(); + fwrite(words.data(), 1, words.size(), f); + fclose(f); +} + +Poco::JSON::Array Mnemonic::getSortedWordList() +{ + std::list words; + for (auto it = mWordHashIndices.begin(); it != mWordHashIndices.end(); it++) { + words.push_back(mWords[it->second]); + } + words.sort(); + Poco::JSON::Array json; + for (auto it = words.begin(); it != words.end(); it++) { + json.add(*it); + } +// json.stringify() + return json; +} \ No newline at end of file diff --git a/src/cpp/Crypto/mnemonic.h b/src/cpp/Crypto/mnemonic.h index 0c28c78b5..3197922a8 100644 --- a/src/cpp/Crypto/mnemonic.h +++ b/src/cpp/Crypto/mnemonic.h @@ -15,6 +15,9 @@ #include "Poco/Mutex.h" #include #include +#include + +#include "Poco/JSON/Array.h" #define PHRASE_WORD_COUNT 24 @@ -33,6 +36,10 @@ public: // using only for debugging std::string getCompleteWordList(); + Poco::JSON::Array getSortedWordList(); + + void printToFile(const char* filename); + protected: void clear(); diff --git a/src/cpp/HTTPInterface/LoginPage.cpp b/src/cpp/HTTPInterface/LoginPage.cpp index 580e80798..b8b24515a 100644 --- a/src/cpp/HTTPInterface/LoginPage.cpp +++ b/src/cpp/HTTPInterface/LoginPage.cpp @@ -125,7 +125,10 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: } if(lastExternReferer != "") { response.redirect(lastExternReferer); - } else if(refererString != "") { + } else if(refererString != "" && + refererString.find("login") == std::string::npos && + refererString.find("logout") == std::string::npos && + refererString.find("user_delete") == std::string::npos ) { response.redirect(refererString); } else { response.redirect(ServerConfig::g_php_serverPath + "/"); @@ -203,20 +206,20 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "
\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t \n"; responseStream << "\t\t\t\t\"logo\"\n"; responseStream << "\t\t\t\n"; @@ -228,29 +231,29 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t"; -#line 157 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\t \n"; responseStream << "\t\t\t
\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "\t\t\t \n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " \n"; @@ -259,12 +262,12 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "
\n"; responseStream << "
\n"; responseStream << " \n"; @@ -275,39 +278,39 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "
\n"; responseStream << "
\n"; responseStream << " gettext("E-Mail") ); responseStream << "\" value=\""; -#line 183 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 186 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( presetEmail ); responseStream << "\"/>\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " gettext("Password") ); responseStream << "\" />\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "
\n"; responseStream << "

"; -#line 190 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 193 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( langCatalog->gettext("You haven't any account yet? Please follow the link to create one.") ); responseStream << "

\n"; responseStream << " "; -#line 191 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 194 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( langCatalog->gettext("Create New Account") ); responseStream << "\n"; responseStream << "
\n"; responseStream << "\t\t\t\t\t
\n"; diff --git a/src/cpp/HTTPInterface/PassphrasePage.cpp b/src/cpp/HTTPInterface/PassphrasePage.cpp index 3f74e1ea8..c50ec3927 100644 --- a/src/cpp/HTTPInterface/PassphrasePage.cpp +++ b/src/cpp/HTTPInterface/PassphrasePage.cpp @@ -9,15 +9,17 @@ #include "../SingletonManager/SessionManager.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_old.cpsp" +#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" #include "../ServerConfig.h" @@ -36,13 +38,18 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: if (_compressResponse) response.set("Content-Encoding", "gzip"); Poco::Net::HTMLForm form(request, request.stream()); -#line 19 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 21 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" - const char* pageName = "Passphrase"; + const char* pageName = gettext("Passphrase"); + std::string pageTitle = gettext("Ein neues Konto anlegen"); + std::string pageSubtitle = gettext("Passphrase"); PageState state = PAGE_ASK_PASSPHRASE; + auto lang = mSession->getLanguage(); auto sm = SessionManager::getInstance(); auto uri_start = ServerConfig::g_serverPath;//request.serverParams().getServerName(); + Mnemonic* 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 @@ -58,7 +65,6 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: if (registerKeyChoice == "no") { auto oldPassphrase = KeyPair::filterPassphrase(form.get("passphrase-existing", "")); - Mnemonic* wordSource = nullptr; if (oldPassphrase != "" && User::validatePassphrase(oldPassphrase, &wordSource)) { // passphrase is valid if(PAGE_FORCE_ASK_PASSPHRASE == state) { @@ -89,70 +95,42 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: state = PAGE_SHOW_PASSPHRASE; mSession->updateState(SESSION_STATE_PASSPHRASE_SHOWN); } + if(state == PAGE_ASK_ENSURE_PASSPHRASE) { + pageSubtitle = gettext("Passphrase überprüfen"); + } + else if(state == PAGE_ASK_PASSPHRASE) { + pageSubtitle = gettext("Passphrase erfragen"); + } else if(state == PAGE_FORCE_ASK_PASSPHRASE) { + pageTitle = gettext("Neues Passwort anlegen"); + pageSubtitle = gettext("Passphrase erfragen"); + } getErrors(mSession); 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_old.cpsp + // begin include login_header.cpsp + // begin include header.cpsp responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; - responseStream << "\n"; + responseStream << "\n"; responseStream << "Gradido Login Server: "; -#line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp" +#line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); responseStream << "\n"; - responseStream << "\n"; responseStream << "\n"; - responseStream << "\n"; + responseStream << "css/loginServer/style.css\">\n"; responseStream << "\n"; - responseStream << "\n"; + responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

Login Server in Entwicklung

\n"; responseStream << "\t

Alpha "; -#line 53 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp" +#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( ServerConfig::g_versionString ); responseStream << "

\n"; responseStream << "
\n"; @@ -160,110 +138,377 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: responseStream << "\t
\n"; responseStream << "\t\t
    \n"; responseStream << "\t\t
  • Startseite\n"; responseStream << "\t\t
  • Logout
  • \n"; responseStream << "\t\t
\n"; responseStream << "\t
\n"; responseStream << "-->"; - // end include header_old.cpsp + // end include header.cpsp responseStream << "\n"; - responseStream << "
\n"; - responseStream << "\t

Einen neuen Account anlegen

\n"; - responseStream << "\t"; -#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + 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 << "\t"; -#line 76 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" - if(state == PAGE_SHOW_PASSPHRASE) { responseStream << "\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\t\tSchreibe dir die Passphrase auf und packe sie gut weg. Du brauchst sie um deine Adresse wiederherzustellen. Wenn du sie verlierst, sind auch deine Gradidos verloren.\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\t\t"; -#line 82 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" - responseStream << ( mSession->getPassphrase() ); + responseStream << "
\n"; + responseStream << "
"; + // end include login_header.cpsp + // begin include flags.cpsp + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "\t
\n"; + responseStream << "\t\t\n"; + responseStream << "\t
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "\t
\n"; + responseStream << "\t\t\n"; + responseStream << "\t
\n"; + responseStream << "
\n"; + responseStream << "
"; + // end include flags.cpsp responseStream << "\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\t\t

Was ist eine Passphrase?

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

Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen.

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

Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. Bitcoin) um maximale Sicherheit zu erreichen.

\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\tWeiter\n"; - responseStream << "\t\t
\n"; - responseStream << "\t"; -#line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" - } else if(state == PAGE_ASK_PASSPHRASE) { responseStream << "\n"; - responseStream << "\t

Deine E-Mail Adresse wurde erfolgreich bestätigt.

\n"; - responseStream << "\t\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\tNeue Gradido Adresse anlegen / wiederherstellen\n"; - responseStream << "\t\t\t

Möchtest Du ein bestehendes* Gradido-Konto wiederherstellen oder ein neues anlegen?

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

*Das Konto muss nach dem 01.09.2019 angelegt worden sein.

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

Um dein Konto wiederherzustellen, 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

\n"; - responseStream << "\t\t\t\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\n"; - responseStream << "\t\t\n"; - responseStream << "\t\t\n"; - responseStream << "\t
\n"; - responseStream << "\t"; -#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" - } else { responseStream << "\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\tUngültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende dich an den Server-Admin. \n"; - responseStream << "\t\t
\n"; - responseStream << "\t"; -#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" - } responseStream << "\n"; + responseStream << "
\n"; + responseStream << "\t

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

\n"; + responseStream << "\t

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

\n"; responseStream << "
\n"; - // begin include footer.cpsp - responseStream << "\t
\n"; - responseStream << "\t\t\t"; -#line 2 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" + responseStream << "
\n"; + responseStream << "\t
\n"; + responseStream << "\t"; +#line 94 "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
\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t\t
"; +#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Was zu tun ist:") ); + responseStream << "
\n"; + responseStream << "\t\t\t

"; +#line 100 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Schreibe dir deine Passphrase auf und packe sie gut weg. Du brauchst sie um deine Adresse wiederherzustellen. Wenn du sie verlierst, sind auch deine Gradidos verloren.") ); + responseStream << "

\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t\t
"; +#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Passphrase") ); + responseStream << "
\n"; + responseStream << "\t\t\t

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

\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t\t
"; +#line 107 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Was ist eine Passphrase?") ); + responseStream << "
\n"; + responseStream << "\t\t\t

"; +#line 108 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen.") ); + responseStream << "

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

"; +#line 109 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. Bitcoin) um maximale Sicherheit zu erreichen.") ); + responseStream << "

\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t "; +#line 112 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Weiter") ); + responseStream << "\n"; + responseStream << "\t\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t "; +#line 115 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + } else if(state == PAGE_ASK_ENSURE_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
\n"; + responseStream << "\t\t\t\t\t
\n"; + responseStream << "\t\t\t\t\t
\n"; + responseStream << "\t\t\t\t\t\t
"; +#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Was zu tun ist:") ); + responseStream << "
\n"; + responseStream << "\t\t\t\t\t\t

"; +#line 125 "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

"; +#line 126 "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

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

"; +#line 150 "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 154 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Neue Gradido Adresse anlegen / wiederherstellen") ); + responseStream << "
\n"; + responseStream << "\t\t\t\t

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

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

"; +#line 156 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("*Das Konto muss nach dem 01.09.2019 angelegt worden sein.") ); + responseStream << "

\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\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 185 "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
\n"; + responseStream << "\t\t\t
"; +#line 190 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Konto wiederherstellen / Neues Passwort anlegen") ); + responseStream << "
\n"; + responseStream << "\t\t\t

"; +#line 191 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Um dein Konto wiederherzustellen, 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 200 "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 205 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ( gettext("Fehler") ); + responseStream << "
\n"; + responseStream << "\t\t\t\t

"; +#line 206 "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 211 "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 << "\t
\n"; - responseStream << "\n"; - responseStream << ""; - // end include footer.cpsp + 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(); } diff --git a/src/cpp/HTTPInterface/SessionHTTPRequestHandler.h b/src/cpp/HTTPInterface/SessionHTTPRequestHandler.h index d5b53b363..5c622a8f8 100644 --- a/src/cpp/HTTPInterface/SessionHTTPRequestHandler.h +++ b/src/cpp/HTTPInterface/SessionHTTPRequestHandler.h @@ -13,7 +13,6 @@ public: protected: Session* mSession; - inline const char* gettext(const char* text) { if (!mSession || !mSession->getLanguageCatalog()) return text; return mSession->getLanguageCatalog()->gettext(text); } diff --git a/src/cpp/HTTPInterface/UpdateUserPasswordPage.cpp b/src/cpp/HTTPInterface/UpdateUserPasswordPage.cpp index 8440b2d50..01e350017 100644 --- a/src/cpp/HTTPInterface/UpdateUserPasswordPage.cpp +++ b/src/cpp/HTTPInterface/UpdateUserPasswordPage.cpp @@ -56,7 +56,7 @@ void UpdateUserPasswordPage::handleRequest(Poco::Net::HTTPServerRequest& request auto sessionState = mSession->getSessionState(); - if(user->updatePassword(pwd, "", mSession->getNewUser())) { + if(user->updatePassword(pwd, mSession->getPassphrase(), mSession->getNewUser())) { //std::string referUri = request.get("Referer", uri_start + "/"); //printf("[updateUserPasswordPage] redirect to referUri: %s\n", referUri.data()); @@ -155,17 +155,6 @@ void UpdateUserPasswordPage::handleRequest(Poco::Net::HTTPServerRequest& request responseStream << ( ServerConfig::g_versionString ); responseStream << "

\n"; responseStream << "
\n"; - responseStream << ""; // end include header_old.cpsp responseStream << "\n"; responseStream << "
\n"; diff --git a/src/cpp/ServerConfig.cpp b/src/cpp/ServerConfig.cpp index 772da0503..48d8b0797 100644 --- a/src/cpp/ServerConfig.cpp +++ b/src/cpp/ServerConfig.cpp @@ -58,6 +58,7 @@ namespace ServerConfig { printf("[%s] error init german mnemonic set, error nr: %d\n", __FUNCTION__, iResult); return false; } + //g_Mnemonic_WordLists[i].printToFile("de_words.txt"); break; case MNEMONIC_BIP0039_SORTED_ORDER: iResult = g_Mnemonic_WordLists[i].init(populate_mnemonic_bip0039, g_mnemonic_bip0039_original_size, g_mnemonic_bip0039_compressed_size); diff --git a/src/cpp/model/Session.h b/src/cpp/model/Session.h index f53124155..d74a17995 100644 --- a/src/cpp/model/Session.h +++ b/src/cpp/model/Session.h @@ -50,11 +50,13 @@ enum SessionStates { }; class SessionManager; +class UpdateUserPasswordPage; class Session : public ErrorList, public UniLib::lib::MultithreadContainer { friend WriteEmailVerification; friend SessionManager; + friend UpdateUserPasswordPage; public: Session(int handle); ~Session(); @@ -116,6 +118,7 @@ public: // ------------------------ Passphrase functions ---------------------------- inline void setPassphrase(const std::string& passphrase) { mPassphrase = passphrase; } + inline const std::string& getPassphrase() { return mPassphrase; } bool generatePassphrase(); bool generateKeys(bool savePrivkey, bool savePassphrase); @@ -164,6 +167,7 @@ protected: void detectSessionState(); static const char* translateSessionStateToString(SessionStates state); + inline const std::string& getPassphrase() const { return mPassphrase; } private: diff --git a/src/cpsp/footer_ripple.cpsp b/src/cpsp/footer_ripple.cpsp index f1e763fe9..c40874f35 100644 --- a/src/cpsp/footer_ripple.cpsp +++ b/src/cpsp/footer_ripple.cpsp @@ -1,5 +1,5 @@ -
-
+
+
@@ -11,7 +11,7 @@
- Copyright © 2019 Gradido + Copyright © 2020 Gradido
diff --git a/src/cpsp/login.cpsp b/src/cpsp/login.cpsp index ea52d60b7..82978ca85 100644 --- a/src/cpsp/login.cpsp +++ b/src/cpsp/login.cpsp @@ -104,7 +104,10 @@ } if(lastExternReferer != "") { response.redirect(lastExternReferer); - } else if(refererString != "") { + } else if(refererString != "" && + refererString.find("login") == std::string::npos && + refererString.find("logout") == std::string::npos && + refererString.find("user_delete") == std::string::npos ) { response.redirect(refererString); } else { response.redirect(ServerConfig::g_php_serverPath + "/"); diff --git a/src/cpsp/passphrase.cpsp b/src/cpsp/passphrase.cpsp index 06809a668..d07ef3d92 100644 --- a/src/cpsp/passphrase.cpsp +++ b/src/cpsp/passphrase.cpsp @@ -7,21 +7,28 @@ <%! #include "../SingletonManager/SessionManager.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 }; %> <%% - const char* pageName = "Passphrase"; + const char* pageName = gettext("Passphrase"); + std::string pageTitle = gettext("Ein neues Konto anlegen"); + std::string pageSubtitle = gettext("Passphrase"); PageState state = PAGE_ASK_PASSPHRASE; + auto lang = mSession->getLanguage(); auto sm = SessionManager::getInstance(); auto uri_start = ServerConfig::g_serverPath;//request.serverParams().getServerName(); + Mnemonic* 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 @@ -37,7 +44,6 @@ enum PageState if (registerKeyChoice == "no") { auto oldPassphrase = KeyPair::filterPassphrase(form.get("passphrase-existing", "")); - Mnemonic* wordSource = nullptr; if (oldPassphrase != "" && User::validatePassphrase(oldPassphrase, &wordSource)) { // passphrase is valid if(PAGE_FORCE_ASK_PASSPHRASE == state) { @@ -68,63 +74,141 @@ enum PageState state = PAGE_SHOW_PASSPHRASE; mSession->updateState(SESSION_STATE_PASSPHRASE_SHOWN); } + if(state == PAGE_ASK_ENSURE_PASSPHRASE) { + pageSubtitle = gettext("Passphrase überprüfen"); + } + else if(state == PAGE_ASK_PASSPHRASE) { + pageSubtitle = gettext("Passphrase erfragen"); + } else if(state == PAGE_FORCE_ASK_PASSPHRASE) { + pageTitle = gettext("Neues Passwort anlegen"); + pageSubtitle = gettext("Passphrase erfragen"); + } getErrors(mSession); -%><%@ include file="header_old.cpsp" %> -
-

Einen neuen Account anlegen

- <%= getErrorsHtml() %> - <% if(state == PAGE_SHOW_PASSPHRASE) {%> -
-
- Schreibe dir die Passphrase auf und packe sie gut weg. Du brauchst sie um deine Adresse wiederherzustellen. Wenn du sie verlierst, sind auch deine Gradidos verloren. -
-
- <%= mSession->getPassphrase() %> -
-
-

Was ist eine Passphrase?

-

Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen.

-

Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. Bitcoin) um maximale Sicherheit zu erreichen.

-
-
- Weiter -
- <% } else if(state == PAGE_ASK_PASSPHRASE) { %> -

Deine E-Mail Adresse wurde erfolgreich bestätigt.

-
-
- Neue Gradido Adresse anlegen / wiederherstellen -

Möchtest Du ein bestehendes* Gradido-Konto wiederherstellen oder ein neues anlegen?

-

*Das Konto muss nach dem 01.09.2019 angelegt worden sein.

-

- - -

-

- - -

- -
- - - -
- <% } else if(PAGE_FORCE_ASK_PASSPHRASE == state ) { %> -
-
- Konto wiederherstellen / Neues Passwort anlegen -

Um dein Konto wiederherzustellen, 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

- -
- - - -
- <% } else { %> -
- Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende dich an den Server-Admin. -
- <% } %> +%><%@ include file="login_header.cpsp" %><%@ include file="flags.cpsp" %> +
+

<%= pageTitle %>

+

<%= pageSubtitle %>

-<%@ include file="footer.cpsp" %> +
+
+ <% if(state == PAGE_SHOW_PASSPHRASE) {%> +
+
+
+
+
<%= gettext("Was zu tun ist:") %>
+

<%= gettext("Schreibe dir deine Passphrase auf und packe sie gut weg. Du brauchst sie um deine Adresse wiederherzustellen. Wenn du sie verlierst, sind auch deine Gradidos verloren.") %>

+
+
+
<%= gettext("Passphrase") %>
+

<%= mSession->getPassphrase() %>

+
+
+
<%= gettext("Was ist eine Passphrase?") %>
+

<%= gettext("Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen.") %>

+

<%= gettext("Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. Bitcoin) um maximale Sicherheit zu erreichen.") %>

+
+
+ <%= gettext("Weiter") %> +
+
+ <% } else if(state == PAGE_ASK_ENSURE_PASSPHRASE) { %> +
+
+
+
+
+
+
+
+
<%= gettext("Was zu tun ist:") %>
+

<%= gettext("Hast du dir deine Passphrase gemerkt?") %>

+

<%= gettext("Dann zeig es mir. Zur Unterstützung gebe ich dir deine Wörter aber in anderer Reihenfolge.") %>

+

<%= gettext("Klicke sie an um sie einzusetzen.") %>

+
+
+ +
+
+
+
+
+
+
+ + <% } else if(state == PAGE_ASK_PASSPHRASE) { %> +
+
+
+
+
<%= gettext("Passphrase") %>
+

<%= gettext("Deine E-Mail Adresse wurde erfolgreich bestätigt.") %>

+
+
+
+
<%= gettext("Neue Gradido Adresse anlegen / wiederherstellen") %>
+

<%= gettext("Möchtest Du ein bestehendes* Gradido-Konto wiederherstellen oder ein neues anlegen?") %>

+

<%= gettext("*Das Konto muss nach dem 01.09.2019 angelegt worden sein.") %>

+
+
+
+
+
+ +
+
+ +
+
+ + +
+
+
+
+ +
+
+ <% } else if(state == PAGE_FORCE_ASK_PASSPHRASE) { %> +
+
+
+
+
<%= gettext("Konto wiederherstellen / Neues Passwort anlegen") %>
+

<%= gettext("Um dein Konto wiederherzustellen, 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.") %>

+
+
+ + +
+
+
+
+ <% } else { %> +
+
+
+
+
<%= gettext("Fehler") %>
+

<%= gettext("Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende dich an den Server-Admin.") %>

+
+
+
+
+ <% } %> +
+
+<%@ include file="footer_ripple.cpsp" %> diff --git a/src/cpsp/updateUserPassword.cpsp b/src/cpsp/updateUserPassword.cpsp index 2ff5975cb..d3c39380d 100644 --- a/src/cpsp/updateUserPassword.cpsp +++ b/src/cpsp/updateUserPassword.cpsp @@ -34,7 +34,7 @@ enum PageState { auto sessionState = mSession->getSessionState(); - if(user->updatePassword(pwd, "", mSession->getNewUser())) { + if(user->updatePassword(pwd, mSession->getPassphrase(), mSession->getNewUser())) { //std::string referUri = request.get("Referer", uri_start + "/"); //printf("[updateUserPasswordPage] redirect to referUri: %s\n", referUri.data());