Update passphrase page

This commit is contained in:
Dario 2020-02-20 17:01:22 +01:00
parent 1e6b896ffb
commit c0e40f715d
12 changed files with 598 additions and 240 deletions

View File

@ -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<std::string> 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;
}

View File

@ -15,6 +15,9 @@
#include "Poco/Mutex.h"
#include <string>
#include <map>
#include <list>
#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();

View File

@ -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 << " <div class=\"row\">\n";
responseStream << " <div class=\"col-12 logo-section\">\n";
responseStream << " <a href=\"";
#line 144 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 147 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "\" class=\"logo\">\n";
responseStream << "\t\t\t<picture>\n";
responseStream << "\t\t\t\t<source srcset=\"";
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "img/logo_schrift.webp\" type=\"image/webp\">\n";
responseStream << "\t\t\t\t<source srcset=\"";
#line 147 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "img/logo_schrift.png\" type=\"image/png\"> \n";
responseStream << "\t\t\t\t<img src=\"";
#line 148 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 151 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "img/logo_schrift.png\" alt=\"logo\" />\n";
responseStream << "\t\t\t</picture>\n";
@ -228,29 +231,29 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " <div class=\"grid\">\n";
responseStream << "\t\t\t<div class=\"center-ul-container\">\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</div>\n";
responseStream << " <div class=\"grid-body\">\n";
responseStream << " <form action=\"";
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 163 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_serverPath );
responseStream << "/\" method=\"POST\">\n";
responseStream << "\t\t\t <input type=\"hidden\" name=\"lang\" value=\"";
#line 161 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 164 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( LanguageManager::keyForLanguage(lang) );
responseStream << "\">\n";
responseStream << " <div class=\"row pull-right-row\">\n";
responseStream << " <div class=\"equel-grid pull-right\">\n";
responseStream << " <div class=\"grid-body-small text-center\">\n";
responseStream << " <button id=\"flag-england\" name=\"lang-btn\" value=\"en\" title=\"English\" type=\"submit\" ";
#line 165 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
if(lang != LANG_EN) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
#line 165 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
}
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
#line 166 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 169 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
} responseStream << ">\n";
responseStream << " <span class=\"flag-england\"></span>\n";
responseStream << " </button>\n";
@ -259,12 +262,12 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " <div class=\"equel-grid pull-right\">\n";
responseStream << " <div class=\"grid-body-small text-center\">\n";
responseStream << " <button id=\"flag-germany\" name=\"lang-btn\" value=\"de\" title=\"Deutsch\" type=\"submit\" ";
#line 173 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 176 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
if(lang != LANG_DE) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
#line 173 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 176 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
}
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
#line 174 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 177 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
} responseStream << ">\n";
responseStream << " <span class=\"flag-germany\"></span>\n";
responseStream << " </button>\n";
@ -275,39 +278,39 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " <div class=\"col-lg-7 col-md-8 col-sm-9 col-12 mx-auto form-wrapper\">\n";
responseStream << " <div class=\"form-group input-rounded\">\n";
responseStream << " <input type=\"text\" class=\"form-control\" name=\"login-email\" placeholder=\"";
#line 183 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 186 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->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 << " </div>\n";
responseStream << " <div class=\"form-group input-rounded\">\n";
responseStream << " <input type=\"password\" class=\"form-control\" name=\"login-password\" placeholder=\"";
#line 186 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 189 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Password") );
responseStream << "\" />\n";
responseStream << " </div>\n";
responseStream << " <button type=\"submit\" name=\"submit\" class=\"btn btn-primary btn-block\">";
#line 188 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 191 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext(" Login ") );
responseStream << "</button>\n";
responseStream << " <div class=\"signup-link\">\n";
responseStream << " <p>";
#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 << "</p>\n";
responseStream << " <a href=\"https://gradido.com\">";
#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 << "</a>\n";
responseStream << " </div>\n";
responseStream << "\t\t\t\t\t<div class=\"reset-pwd-link\">\n";
responseStream << "\t\t\t\t\t\t<a href=\"";
#line 194 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_serverPath );
responseStream << "/resetPassword\">";
#line 194 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Passwort vergessen") );
responseStream << "</a>\n";
responseStream << "\t\t\t\t\t</div>\n";

View File

@ -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 << "<!DOCTYPE html>\n";
responseStream << "<html>\n";
responseStream << "<head>\n";
responseStream << "<meta charset=\"UTF-8\">\n";
responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n";
responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n";
responseStream << "<title>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 << "</title>\n";
responseStream << "<!--<link rel=\"stylesheet\" type=\"text/css\" href=\"css/styles.min.css\">-->\n";
responseStream << "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp"
#line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "/css/styles.css\">\n";
responseStream << "<style type=\"text/css\" >\n";
responseStream << ".grd_container\n";
responseStream << "{\n";
responseStream << " max-width:820px;\n";
responseStream << " margin-left:auto;\n";
responseStream << " margin-right:auto;\n";
responseStream << "}\n";
responseStream << "\n";
responseStream << "input:not([type='radio']) {\n";
responseStream << "\twidth:200px;\n";
responseStream << "}\n";
responseStream << "label:not(.grd_radio_label) {\n";
responseStream << "\twidth:80px;\n";
responseStream << "\tdisplay:inline-block;\n";
responseStream << "}\n";
responseStream << ".grd_container_small\n";
responseStream << "{\n";
responseStream << " max-width:500px;\n";
responseStream << "}\n";
responseStream << ".grd_text {\n";
responseStream << " max-width:550px;\n";
responseStream << " margin-bottom: 5px;\n";
responseStream << "}\n";
responseStream << ".dev-info {\n";
responseStream << "\tposition: fixed;\n";
responseStream << "\tcolor:grey;\n";
responseStream << "\tfont-size: smaller;\n";
responseStream << "\tleft:8px;\n";
responseStream << "}\n";
responseStream << ".grd-time-used { \n";
responseStream << " bottom:0;\n";
responseStream << "} \n";
responseStream << "\n";
responseStream << ".versionstring {\n";
responseStream << "\ttop:0;\n";
responseStream << "}\n";
responseStream << "</style>\n";
responseStream << "css/loginServer/style.css\">\n";
responseStream << "</head>\n";
responseStream << "<body>\n";
responseStream << "<body class=\"header-fixed\">\n";
responseStream << "<div class=\"versionstring dev-info\">\n";
responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n";
responseStream << "\t<p class=\"grd_small\">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 << "</p>\n";
responseStream << "</div>\n";
@ -160,110 +138,377 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
responseStream << "\t<div class=\"grd-left-bar-section\">\n";
responseStream << "\t\t<ul class=\"grd-no-style\">\n";
responseStream << "\t\t <li><a href=\"";
#line 58 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp"
#line 20 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "\" class=\"grd-nav-bn\">Startseite</a>\n";
responseStream << "\t\t <li><a href=\"./account/logout\" class=\"grd-nav-bn\">Logout</a></li>\n";
responseStream << "\t\t</ul>\n";
responseStream << "\t</div>\n";
responseStream << "</nav>-->";
// end include header_old.cpsp
// end include header.cpsp
responseStream << "\n";
responseStream << "<div class=\"grd_container\">\n";
responseStream << "\t<h1>Einen neuen Account anlegen</h1>\n";
responseStream << "\t";
#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << "<div class=\"authentication-theme auth-style_1\">\n";
responseStream << " <div class=\"row\">\n";
responseStream << " <div class=\"col-12 logo-section\">\n";
responseStream << " <a href=\"";
#line 5 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "\" class=\"logo\">\n";
responseStream << " <picture>\n";
responseStream << "\t\t\t\t<source srcset=\"";
#line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "img/logo_schrift.webp\" type=\"image/webp\">\n";
responseStream << "\t\t\t\t<source srcset=\"";
#line 8 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "img/logo_schrift.png\" type=\"image/png\"> \n";
responseStream << "\t\t\t\t<img src=\"";
#line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "img/logo_schrift.png\" alt=\"logo\" />\n";
responseStream << "\t\t\t</picture>\n";
responseStream << " </a>\n";
responseStream << " </div>\n";
responseStream << " </div>\n";
responseStream << " <div class=\"row\">\n";
responseStream << " <div class=\"col-lg-5 col-md-7 col-sm-9 col-11 mx-auto\">\n";
responseStream << " <div class=\"grid\">\n";
responseStream << " <div class=\"center-ul-container\">\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<div class=\"grd_text-max-width\">\n";
responseStream << "\t\t\t<div class=\"grd_text\">\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</div>\n";
responseStream << "\t\t\t<div class=\"grd_textarea\" style=\"width:220px;text-align:center;\">\n";
responseStream << "\t\t\t\t";
#line 82 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( mSession->getPassphrase() );
responseStream << " </div>\n";
responseStream << " <div class=\"grid-body\">";
// end include login_header.cpsp
// begin include flags.cpsp
responseStream << "<div class=\"row pull-right-row\">\n";
responseStream << " <div class=\"equel-grid pull-right\">\n";
responseStream << "\t<div class=\"grid-body-small text-center\">\n";
responseStream << "\t\t<button id=\"flag-england\" name=\"lang\" value=\"en\" title=\"English\" type=\"submit\" ";
#line 4 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
if(lang != LANG_EN) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
#line 4 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
}
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
#line 5 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
} responseStream << ">\n";
responseStream << "\t\t <span class=\"flag-england\"></span>\n";
responseStream << "\t\t</button>\n";
responseStream << "\t</div>\n";
responseStream << " </div>\n";
responseStream << " <div class=\"equel-grid pull-right\">\n";
responseStream << "\t<div class=\"grid-body-small text-center\">\n";
responseStream << "\t\t<button id=\"flag-germany\" name=\"lang\" value=\"de\" title=\"Deutsch\" type=\"submit\" ";
#line 12 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
if(lang != LANG_DE) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
#line 12 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
}
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
} responseStream << ">\n";
responseStream << "\t\t <span class=\"flag-germany\"></span>\n";
responseStream << "\t\t</button>\n";
responseStream << "\t</div>\n";
responseStream << " </div>\n";
responseStream << "</div>";
// end include flags.cpsp
responseStream << "\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t\t<div class=\"grd_text\">\n";
responseStream << "\t\t\t\t<h3>Was ist eine Passphrase?</h3>\n";
responseStream << "\t\t\t\t<p>Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen. </p>\n";
responseStream << "\t\t\t\t<p>Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. Bitcoin) um maximale Sicherheit zu erreichen.</p>\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t\t<div class=\"grd-margin-top-10\"></div>\n";
responseStream << "\t\t\t<a href=\"saveKeys\" class=\"grd-form-bn grd-form-bn-succeed grd_clickable\">Weiter</a>\n";
responseStream << "\t\t</div>\n";
responseStream << "\t";
#line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
} else if(state == PAGE_ASK_PASSPHRASE) { responseStream << "\n";
responseStream << "\t<p>Deine E-Mail Adresse wurde erfolgreich bestätigt. </p>\n";
responseStream << "\t<form method=\"POST\" action=\"";
#line 94 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( uri_start );
responseStream << "/passphrase\">\n";
responseStream << "\t\t<fieldset class=\"grd_container_small\">\n";
responseStream << "\t\t\t<legend>Neue Gradido Adresse anlegen / wiederherstellen</legend>\n";
responseStream << "\t\t\t<p>Möchtest Du ein bestehendes* Gradido-Konto wiederherstellen oder ein neues anlegen?</p>\n";
responseStream << "\t\t\t<p>*Das Konto muss nach dem 01.09.2019 angelegt worden sein.</p>\n";
responseStream << "\t\t\t<p class=\"grd_small\">\n";
responseStream << "\t\t\t\t<input id=\"passphrase-new-yes\" type=\"radio\" name=\"passphrase\" value=\"yes\" checked/>\n";
responseStream << "\t\t\t\t<label class=\"grd_radio_label\" for=\"passphrase-new-yes\">Nein, bitte ein neues erstellen!</label>\n";
responseStream << "\t\t\t</p>\n";
responseStream << "\t\t\t<p class=\"grd_small\">\n";
responseStream << "\t\t\t\t<input id=\"passphrase-new-no\" type=\"radio\" name=\"passphrase\" value=\"no\"/>\n";
responseStream << "\t\t\t\t<label class=\"grd_radio_label\" for=\"passphrase-new-no\">Ja, bitte wiederherstellen!</label>\n";
responseStream << "\t\t\t</p>\n";
responseStream << "\t\t\t<textarea style=\"width:100%;height:100px\" name=\"passphrase-existing\">";
#line 107 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( !form.empty() ? form.get("passphrase-existing", "") : "" );
responseStream << "</textarea>\n";
responseStream << "\t\t</fieldset>\n";
responseStream << "\t\t\n";
responseStream << "\t\t<input class=\"grd-form-bn grd-form-bn-succeed grd_clickable\" type=\"submit\" name=\"submit\" value=\"Weiter\">\n";
responseStream << "\t\t\n";
responseStream << "\t</form>\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<form method=\"POST\" action=\"";
#line 114 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( uri_start );
responseStream << "/passphrase\">\n";
responseStream << "\t\t<fieldset class=\"grd_container_small\">\n";
responseStream << "\t\t\t<legend>Konto wiederherstellen / Neues Passwort anlegen</legend>\n";
responseStream << "\t\t\t<p>Um dein Konto wiederherzustellen, dir ein Neues Passwort ausw&auml;hlen zu können, tippe hier bitte die W&ouml;rter deiner Passphrase in der richtigen Reihenfolge ein, welche du dir aufgeschrieben hast</p>\n";
responseStream << "\t\t\t<textarea style=\"width:100%;height:100px\" name=\"passphrase-existing\">";
#line 118 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( !form.empty() ? form.get("passphrase-existing", "") : "" );
responseStream << "</textarea>\n";
responseStream << "\t\t</fieldset>\n";
responseStream << "\t\t\n";
responseStream << "\t\t<input class=\"grd-form-bn grd-form-bn-succeed grd_clickable\" type=\"submit\" name=\"submit\" value=\"Weiter\">\n";
responseStream << "\t\t\n";
responseStream << "\t</form>\n";
responseStream << "\t";
#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t<div class=\"grd_text\">\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</div>\n";
responseStream << "\t";
#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
} responseStream << "\n";
responseStream << "<div class=\"row mb-3\">\n";
responseStream << "\t<h2>";
#line 89 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( pageTitle );
responseStream << "</h2>\n";
responseStream << "\t<h3 class=\"mx-auto\">";
#line 90 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( pageSubtitle );
responseStream << "</h3>\n";
responseStream << "</div>\n";
// begin include footer.cpsp
responseStream << "\t<div class=\"grd-time-used dev-info\">\n";
responseStream << "\t\t\t";
#line 2 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp"
responseStream << "<div class=\"item-wrapper\">\n";
responseStream << "\t<div class=\"row mb-3\">\n";
responseStream << "\t";
#line 94 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
if(state == PAGE_SHOW_PASSPHRASE) { responseStream << "\n";
responseStream << "\t <div class=\"col-md-10 mx-auto\">\n";
responseStream << "\t\t<div class=\"form-group row showcase_row_area\">\n";
responseStream << "\t\t <div class=\"col-md-12 col-lg-12 \">\n";
responseStream << "\t\t\t<div class=\"alert alert-orange\">\n";
responseStream << "\t\t\t <h5 class=\"alert-heading\">";
#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Was zu tun ist:") );
responseStream << "</h5>\n";
responseStream << "\t\t\t <p>";
#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 << "</p>\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t\t<div class=\"col-lg-8 col-md-10 mx-auto alert alert-primary\" style=\"text-align:center\">\n";
responseStream << "\t\t\t <h5 class=\"alert-heading\">";
#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Passphrase") );
responseStream << "</h5>\n";
responseStream << "\t\t\t <p>";
#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( mSession->getPassphrase() );
responseStream << "</p>\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t\t<div class=\"alert alert-secondary\">\n";
responseStream << "\t\t\t <h5 class=\"alert-heading\">";
#line 107 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Was ist eine Passphrase?") );
responseStream << "</h5>\n";
responseStream << "\t\t\t <p>";
#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 << "</p>\n";
responseStream << "\t\t\t <p>";
#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 << "</p>\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t </div>\n";
responseStream << "\t\t <a href=\"";
#line 112 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( uri_start );
responseStream << "/passphrase\" class=\"btn btn-sm btn-primary pull-right\" name=\"next\">";
#line 112 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Weiter") );
responseStream << "</a>\n";
responseStream << "\t\t</div>\n";
responseStream << "\t </div>\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 <div class=\"\">\n";
responseStream << "\t\t <div class=\"item-wrapper\">\n";
responseStream << "\t\t\t<div class=\"row mb-3\">\n";
responseStream << "\t\t\t <div class=\"col-md-10 mx-auto\">\n";
responseStream << "\t\t\t\t<form>\n";
responseStream << "\t\t\t\t <div class=\"form-group row showcase_row_area\">\n";
responseStream << "\t\t\t\t\t<div class=\"col-md-12 col-lg-12 \">\n";
responseStream << "\t\t\t\t\t <div class=\"alert alert-orange\">\n";
responseStream << "\t\t\t\t\t\t<h5 class=\"alert-heading\">";
#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Was zu tun ist:") );
responseStream << "</h5>\n";
responseStream << "\t\t\t\t\t\t<p>";
#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Hast du dir deine Passphrase gemerkt?") );
responseStream << "</p>\n";
responseStream << "\t\t\t\t\t\t<p>";
#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 << "<p>\n";
responseStream << "\t\t\t\t\t\t<p>";
#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Klicke sie an um sie einzusetzen.") );
responseStream << "</p>\n";
responseStream << "\t\t\t\t\t </div>\n";
responseStream << "\t\t\t\t\t <div id=\"gradido-mithril-passphrase\"></div>\n";
responseStream << "\t\t\t\t\t <noscript>\n";
responseStream << "\t\t\t\t\t\t";
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Ohne Javascript kannst du auch gleich weiter machen:") );
responseStream << "\n";
responseStream << "\t\t\t\t\t\t<a href=\"saveKeys\" class=\"btn btn-sm btn-primary pull-right\" name=\"next\">Weiter</a>\n";
responseStream << "\t\t\t\t\t </noscript>\n";
responseStream << "\t\t\t\t\t</div>\n";
responseStream << "\t\t\t\t </div>\n";
responseStream << "\t\t\t\t</form>\n";
responseStream << "\t\t\t </div>\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t </div>\n";
responseStream << "\t\t</div>\n";
responseStream << "\t\t<script type=\"text/javascript\">\n";
responseStream << "\t\t\tvar mnemonicWords = \"";
#line 142 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
wordSource->getSortedWordList().stringify(responseStream); responseStream << "\";\n";
responseStream << "\t\t</script>\n";
responseStream << "\t ";
#line 144 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
} else if(state == PAGE_ASK_PASSPHRASE) { responseStream << "\n";
responseStream << "\t <div class=\"col-md-10 mx-auto\">\n";
responseStream << "\t\t<div class=\"form-group row showcase_row_area\">\n";
responseStream << "\t\t <div class=\"col-md-12 col-lg-12 \">\n";
responseStream << "\t\t\t<div class=\"col-lg-8 col-md-10 mx-auto alert alert-primary\" style=\"text-align:center\">\n";
responseStream << "\t\t\t <h5 class=\"alert-heading\">";
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Passphrase") );
responseStream << "</h5>\n";
responseStream << "\t\t\t <p>";
#line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Deine E-Mail Adresse wurde erfolgreich bestätigt.") );
responseStream << "</p>\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t\t<form method=\"POST\" action=\"";
#line 152 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( uri_start );
responseStream << "/passphrase\">\n";
responseStream << "\t\t\t\t<div class=\"alert alert-orange\">\n";
responseStream << "\t\t\t\t <h5 class=\"alert-heading\">";
#line 154 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Neue Gradido Adresse anlegen / wiederherstellen") );
responseStream << "</h5>\n";
responseStream << "\t\t\t\t <p>";
#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 << "</p>\n";
responseStream << "\t\t\t\t <p>";
#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 << "</p>\n";
responseStream << "\t\t\t\t</div>\n";
responseStream << "\t\t\t\t<div class=\"row\">\n";
responseStream << "\t\t\t\t\t<div class=\"col-md-9\">\n";
responseStream << "\t\t\t\t\t\t<div class=\"form-group\">\n";
responseStream << "\t\t\t\t\t\t\t<div class=\"radio alert-orange\">\n";
responseStream << "\t\t\t\t\t\t\t\t<label for=\"passphrase-new-yes\" class=\"radio-label mr-4\">\n";
responseStream << "\t\t\t\t\t\t\t\t\t<input id=\"passphrase-new-yes\" name=\"passphrase\" type=\"radio\" value=\"yes\" checked/>\n";
responseStream << "\t\t\t\t\t\t\t\t\t";
#line 164 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Nein, bitte ein neues erstellen!") );
responseStream << "\n";
responseStream << "\t\t\t\t\t\t\t\t\t<i class=\"input-frame\"></i>\n";
responseStream << "\t\t\t\t\t\t\t\t</label>\n";
responseStream << "\t\t\t\t\t\t\t</div>\n";
responseStream << "\t\t\t\t\t\t\t<div class=\"radio alert-orange\">\n";
responseStream << "\t\t\t\t\t\t\t\t<label for=\"passphrase-new-no\" class=\"radio-label mr-4\">\n";
responseStream << "\t\t\t\t\t\t\t\t\t<input id=\"passphrase-new-no\" name=\"passphrase\" type=\"radio\" value=\"no\"/>\n";
responseStream << "\t\t\t\t\t\t\t\t\t";
#line 171 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Ja, bitte wiederherstellen!") );
responseStream << "\n";
responseStream << "\t\t\t\t\t\t\t\t\t<i class=\"input-frame\"></i>\n";
responseStream << "\t\t\t\t\t\t\t\t</label>\n";
responseStream << "\t\t\t\t\t\t\t</div>\n";
responseStream << "\t\t\t\t\t\t</div>\n";
responseStream << "\t\t\t\t\t\t<textarea class=\"form-control\" name=\"passphrase-existing\" cols=\"12\" rows=\"5\">";
#line 176 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( !form.empty() ? form.get("passphrase-existing", "") : "" );
responseStream << "</textarea>\n";
responseStream << "\t\t\t\t\t\t<button type=\"submit\" class=\"btn btn-sm btn-primary pull-right\" name=\"submit\">";
#line 177 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Weiter") );
responseStream << "</button>\n";
responseStream << "\t\t\t\t\t</div>\n";
responseStream << "\t\t\t\t</div>\n";
responseStream << "\t\t\t</form>\n";
responseStream << "\t\t </div>\n";
responseStream << "\t\t <!--<a href=\"";
#line 182 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( uri_start );
responseStream << "/passphrase\" class=\"btn btn-sm btn-primary pull-right\" name=\"next\">";
#line 182 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Weiter") );
responseStream << "</a>-->\n";
responseStream << "\t\t</div>\n";
responseStream << "\t </div>\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 <div class=\"col-md-10 mx-auto\">\n";
responseStream << "\t\t<div class=\"form-group row showcase_row_area\">\n";
responseStream << "\t\t <div class=\"col-md-12 col-lg-12 \">\n";
responseStream << "\t\t\t<div class=\"col-lg-8 col-md-10 mx-auto alert alert-primary\" style=\"text-align:center\">\n";
responseStream << "\t\t\t <h5 class=\"alert-heading\">";
#line 190 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Konto wiederherstellen / Neues Passwort anlegen") );
responseStream << "</h5>\n";
responseStream << "\t\t\t <p>";
#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 << "</p>\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t\t<form method=\"POST\" action=\"";
#line 193 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( uri_start );
responseStream << "/passphrase\">\n";
responseStream << "\t\t\t\t<textarea class=\"form-control\" name=\"passphrase-existing\" cols=\"12\" rows=\"5\">";
#line 194 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( !form.empty() ? form.get("passphrase-existing", "") : "" );
responseStream << "</textarea>\n";
responseStream << "\t\t\t\t<button type=\"submit\" class=\"btn btn-sm btn-primary pull-right\" name=\"submit\">";
#line 195 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Weiter") );
responseStream << "</button>\n";
responseStream << "\t\t\t</form>\n";
responseStream << "\t\t </div>\n";
responseStream << "\t\t</div>\n";
responseStream << "\t </div>\n";
responseStream << "\t ";
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t<div class=\"col-md-10 mx-auto\">\n";
responseStream << "\t\t\t<div class=\"form-group row showcase_row_area\">\n";
responseStream << "\t\t\t <div class=\"col-md-12 col-lg-12 \">\n";
responseStream << "\t\t\t\t<div class=\"col-lg-8 col-md-10 mx-auto alert alert-danger\" style=\"text-align:center\">\n";
responseStream << "\t\t\t\t <h5 class=\"alert-heading\">";
#line 205 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
responseStream << ( gettext("Fehler") );
responseStream << "</h5>\n";
responseStream << "\t\t\t\t <p>";
#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 << "</p>\n";
responseStream << "\t\t\t\t</div>\n";
responseStream << "\t\t\t </div>\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t</div>\n";
responseStream << "\t ";
#line 211 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp"
} responseStream << "\n";
responseStream << "\t</div>\n";
responseStream << "</div>\n";
// begin include footer_ripple.cpsp
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t</div>\n";
responseStream << " <!-- content viewport ends -->\n";
responseStream << " <!-- partial:partials/_footer.html -->\n";
responseStream << " <footer class=\"footer\">\n";
responseStream << " <div class=\"row\">\n";
responseStream << " <div class=\"col-sm-6 text-center text-sm-right order-sm-1\">\n";
responseStream << " <ul class=\"text-gray\">\n";
responseStream << "\t\t\t\t<li><a href=\"https://gradido.net/de/datenschutz/\" target=\"_blank\">Datenschutzerkl&auml;rung</a></li>\n";
responseStream << " <li><a href=\"https://gradido.net/de/impressum/\" target=\"_blank\">Impressum</a></li>\n";
responseStream << " </ul>\n";
responseStream << " </div>\n";
responseStream << " <div class=\"col-sm-6 text-center text-sm-left mt-3 mt-sm-0\">\n";
responseStream << " <small class=\"text-muted d-block\">Copyright © 2020 Gradido</small>\n";
responseStream << " </div>\n";
responseStream << " </div>\n";
responseStream << " </footer>\n";
responseStream << " <!-- partial -->\n";
responseStream << " </div>\n";
responseStream << " <!-- page content ends -->\n";
responseStream << " </div>\n";
responseStream << " <div class=\"grd-time-used dev-info\">\n";
responseStream << " ";
#line 23 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer_ripple.cpsp"
responseStream << ( mTimeProfiler.string() );
responseStream << "\n";
responseStream << "\t</div>\n";
responseStream << "</body>\n";
responseStream << "</html>";
// end include footer.cpsp
responseStream << " </div>\n";
responseStream << " <!--page body ends -->\n";
responseStream << " <!-- SCRIPT LOADING START FORM HERE /////////////-->\n";
responseStream << " <!-- plugins:js -->\n";
responseStream << " <!--<script src=\"../../../assets/vendors/js/core.js\"></script>-->\n";
responseStream << " <!--<script src=\"../../../assets/vendors/js/vendor.addons.js\"></script>-->\n";
responseStream << " <!-- endinject -->\n";
responseStream << " <!-- Vendor Js For This Page Ends-->\n";
responseStream << " <!--<script src=\"../../../assets/vendors/chartjs/Chart.min.js\"></script>-->\n";
responseStream << " <!-- Vendor Js For This Page Ends-->\n";
responseStream << " <!-- build:js -->\n";
responseStream << " <!--<script src=\"../../../assets/js/template.js\"></script>-->\n";
responseStream << " <script src=\"";
#line 36 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer_ripple.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "/js/basic.js\"></script>\n";
responseStream << " <!--<script src=\"../../../assets/js/dashboard.js\"></script>-->\n";
responseStream << " <!-- endbuild -->\n";
responseStream << " </body>\n";
responseStream << "</html>\n";
responseStream << " ";
// end include footer_ripple.cpsp
responseStream << "\n";
if (_compressResponse) _gzipStream.close();
}

View File

@ -14,7 +14,6 @@ public:
protected:
Session* mSession;
inline const char* gettext(const char* text) { if (!mSession || !mSession->getLanguageCatalog()) return text; return mSession->getLanguageCatalog()->gettext(text); }
};

View File

@ -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 << "</p>\n";
responseStream << "</div>\n";
responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n";
responseStream << "\t<div class=\"grd-left-bar-section\">\n";
responseStream << "\t\t<ul class=\"grd-no-style\">\n";
responseStream << "\t\t <li><a href=\"";
#line 58 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "\" class=\"grd-nav-bn\">Startseite</a>\n";
responseStream << "\t\t <li><a href=\"./account/logout\" class=\"grd-nav-bn\">Logout</a></li>\n";
responseStream << "\t\t</ul>\n";
responseStream << "\t</div>\n";
responseStream << "</nav>-->";
// end include header_old.cpsp
responseStream << "\n";
responseStream << "<div class=\"grd_container\">\n";

View File

@ -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);

View File

@ -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:

View File

@ -11,7 +11,7 @@
</ul>
</div>
<div class="col-sm-6 text-center text-sm-left mt-3 mt-sm-0">
<small class="text-muted d-block">Copyright © 2019 Gradido</small>
<small class="text-muted d-block">Copyright © 2020 Gradido</small>
</div>
</div>
</footer>

View File

@ -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 + "/");

View File

@ -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" %>
<div class="grd_container">
<h1>Einen neuen Account anlegen</h1>
<%= getErrorsHtml() %>
%><%@ include file="login_header.cpsp" %><%@ include file="flags.cpsp" %>
<div class="row mb-3">
<h2><%= pageTitle %></h2>
<h3 class="mx-auto"><%= pageSubtitle %></h3>
</div>
<div class="item-wrapper">
<div class="row mb-3">
<% if(state == PAGE_SHOW_PASSPHRASE) {%>
<div class="grd_text-max-width">
<div class="grd_text">
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.
<div class="col-md-10 mx-auto">
<div class="form-group row showcase_row_area">
<div class="col-md-12 col-lg-12 ">
<div class="alert alert-orange">
<h5 class="alert-heading"><%= gettext("Was zu tun ist:") %></h5>
<p><%= 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.") %></p>
</div>
<div class="grd_textarea" style="width:220px;text-align:center;">
<%= mSession->getPassphrase() %>
<div class="col-lg-8 col-md-10 mx-auto alert alert-primary" style="text-align:center">
<h5 class="alert-heading"><%= gettext("Passphrase") %></h5>
<p><%= mSession->getPassphrase() %></p>
</div>
<div class="grd_text">
<h3>Was ist eine Passphrase?</h3>
<p>Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen. </p>
<p>Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. Bitcoin) um maximale Sicherheit zu erreichen.</p>
<div class="alert alert-secondary">
<h5 class="alert-heading"><%= gettext("Was ist eine Passphrase?") %></h5>
<p><%= gettext("Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen.") %></p>
<p><%= gettext("Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. Bitcoin) um maximale Sicherheit zu erreichen.") %></p>
</div>
<div class="grd-margin-top-10"></div>
<a href="saveKeys" class="grd-form-bn grd-form-bn-succeed grd_clickable">Weiter</a>
</div>
<a href="<%= uri_start %>/passphrase" class="btn btn-sm btn-primary pull-right" name="next"><%= gettext("Weiter") %></a>
</div>
</div>
<% } else if(state == PAGE_ASK_ENSURE_PASSPHRASE) { %>
<div class="">
<div class="item-wrapper">
<div class="row mb-3">
<div class="col-md-10 mx-auto">
<form>
<div class="form-group row showcase_row_area">
<div class="col-md-12 col-lg-12 ">
<div class="alert alert-orange">
<h5 class="alert-heading"><%= gettext("Was zu tun ist:") %></h5>
<p><%= gettext("Hast du dir deine Passphrase gemerkt?") %></p>
<p><%= gettext("Dann zeig es mir. Zur Unterstützung gebe ich dir deine Wörter aber in anderer Reihenfolge.") %><p>
<p><%= gettext("Klicke sie an um sie einzusetzen.") %></p>
</div>
<div id="gradido-mithril-passphrase"></div>
<noscript>
<%= gettext("Ohne Javascript kannst du auch gleich weiter machen:") %>
<a href="saveKeys" class="btn btn-sm btn-primary pull-right" name="next">Weiter</a>
</noscript>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var mnemonicWords = "<% wordSource->getSortedWordList().stringify(responseStream); %>";
</script>
<% } else if(state == PAGE_ASK_PASSPHRASE) { %>
<p>Deine E-Mail Adresse wurde erfolgreich bestätigt. </p>
<div class="col-md-10 mx-auto">
<div class="form-group row showcase_row_area">
<div class="col-md-12 col-lg-12 ">
<div class="col-lg-8 col-md-10 mx-auto alert alert-primary" style="text-align:center">
<h5 class="alert-heading"><%= gettext("Passphrase") %></h5>
<p><%= gettext("Deine E-Mail Adresse wurde erfolgreich bestätigt.") %></p>
</div>
<form method="POST" action="<%= uri_start %>/passphrase">
<fieldset class="grd_container_small">
<legend>Neue Gradido Adresse anlegen / wiederherstellen</legend>
<p>Möchtest Du ein bestehendes* Gradido-Konto wiederherstellen oder ein neues anlegen?</p>
<p>*Das Konto muss nach dem 01.09.2019 angelegt worden sein.</p>
<p class="grd_small">
<input id="passphrase-new-yes" type="radio" name="passphrase" value="yes" checked/>
<label class="grd_radio_label" for="passphrase-new-yes">Nein, bitte ein neues erstellen!</label>
</p>
<p class="grd_small">
<input id="passphrase-new-no" type="radio" name="passphrase" value="no"/>
<label class="grd_radio_label" for="passphrase-new-no">Ja, bitte wiederherstellen!</label>
</p>
<textarea style="width:100%;height:100px" name="passphrase-existing"><%= !form.empty() ? form.get("passphrase-existing", "") : "" %></textarea>
</fieldset>
<input class="grd-form-bn grd-form-bn-succeed grd_clickable" type="submit" name="submit" value="Weiter">
<div class="alert alert-orange">
<h5 class="alert-heading"><%= gettext("Neue Gradido Adresse anlegen / wiederherstellen") %></h5>
<p><%= gettext("Möchtest Du ein bestehendes* Gradido-Konto wiederherstellen oder ein neues anlegen?") %></p>
<p><%= gettext("*Das Konto muss nach dem 01.09.2019 angelegt worden sein.") %></p>
</div>
<div class="row">
<div class="col-md-9">
<div class="form-group">
<div class="radio alert-orange">
<label for="passphrase-new-yes" class="radio-label mr-4">
<input id="passphrase-new-yes" name="passphrase" type="radio" value="yes" checked/>
<%= gettext("Nein, bitte ein neues erstellen!") %>
<i class="input-frame"></i>
</label>
</div>
<div class="radio alert-orange">
<label for="passphrase-new-no" class="radio-label mr-4">
<input id="passphrase-new-no" name="passphrase" type="radio" value="no"/>
<%= gettext("Ja, bitte wiederherstellen!") %>
<i class="input-frame"></i>
</label>
</div>
</div>
<textarea class="form-control" name="passphrase-existing" cols="12" rows="5"><%= !form.empty() ? form.get("passphrase-existing", "") : "" %></textarea>
<button type="submit" class="btn btn-sm btn-primary pull-right" name="submit"><%= gettext("Weiter") %></button>
</div>
</div>
</form>
<% } else if(PAGE_FORCE_ASK_PASSPHRASE == state ) { %>
</div>
<!--<a href="<%= uri_start %>/passphrase" class="btn btn-sm btn-primary pull-right" name="next"><%= gettext("Weiter") %></a>-->
</div>
</div>
<% } else if(state == PAGE_FORCE_ASK_PASSPHRASE) { %>
<div class="col-md-10 mx-auto">
<div class="form-group row showcase_row_area">
<div class="col-md-12 col-lg-12 ">
<div class="col-lg-8 col-md-10 mx-auto alert alert-primary" style="text-align:center">
<h5 class="alert-heading"><%= gettext("Konto wiederherstellen / Neues Passwort anlegen") %></h5>
<p><%= 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.") %></p>
</div>
<form method="POST" action="<%= uri_start %>/passphrase">
<fieldset class="grd_container_small">
<legend>Konto wiederherstellen / Neues Passwort anlegen</legend>
<p>Um dein Konto wiederherzustellen, dir ein Neues Passwort ausw&auml;hlen zu können, tippe hier bitte die W&ouml;rter deiner Passphrase in der richtigen Reihenfolge ein, welche du dir aufgeschrieben hast</p>
<textarea style="width:100%;height:100px" name="passphrase-existing"><%= !form.empty() ? form.get("passphrase-existing", "") : "" %></textarea>
</fieldset>
<input class="grd-form-bn grd-form-bn-succeed grd_clickable" type="submit" name="submit" value="Weiter">
<textarea class="form-control" name="passphrase-existing" cols="12" rows="5"><%= !form.empty() ? form.get("passphrase-existing", "") : "" %></textarea>
<button type="submit" class="btn btn-sm btn-primary pull-right" name="submit"><%= gettext("Weiter") %></button>
</form>
</div>
</div>
</div>
<% } else { %>
<div class="grd_text">
Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende dich an den Server-Admin.
<div class="col-md-10 mx-auto">
<div class="form-group row showcase_row_area">
<div class="col-md-12 col-lg-12 ">
<div class="col-lg-8 col-md-10 mx-auto alert alert-danger" style="text-align:center">
<h5 class="alert-heading"><%= gettext("Fehler") %></h5>
<p><%= gettext("Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende dich an den Server-Admin.") %></p>
</div>
</div>
</div>
</div>
<% } %>
</div>
</div>
<%@ include file="footer.cpsp" %>
<%@ include file="footer_ripple.cpsp" %>

View File

@ -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());