diff --git a/src/cpp/Crypto/mnemonic.h b/src/cpp/Crypto/mnemonic.h
index 43ee477d4..39f12c884 100644
--- a/src/cpp/Crypto/mnemonic.h
+++ b/src/cpp/Crypto/mnemonic.h
@@ -12,6 +12,7 @@
*/
#include "DRHashList.h"
+#include
#define PHRASE_WORD_COUNT 24
@@ -26,6 +27,7 @@ public:
inline const char* getWord(unsigned int index) { if (index < 2048) return mWords[index]; return nullptr; }
inline unsigned long getWordIndex(const char* word) { DHASH word_hash = DRMakeStringHash(word); return (long)mWordHashIndices.findByHash(word_hash); }
+ inline bool isWordExist(const std::string& word) { DHASH word_hash = DRMakeStringHash(word.data()); return mWordHashIndices.itemExists(word_hash); }
protected:
char* mWords[2048];
diff --git a/src/cpp/HTTPInterface/CheckEmailPage.cpp b/src/cpp/HTTPInterface/CheckEmailPage.cpp
new file mode 100644
index 000000000..0234b76ad
--- /dev/null
+++ b/src/cpp/HTTPInterface/CheckEmailPage.cpp
@@ -0,0 +1,233 @@
+#include "CheckEmailPage.h"
+#include "Poco/Net/HTTPServerRequest.h"
+#include "Poco/Net/HTTPServerResponse.h"
+#include "Poco/Net/HTMLForm.h"
+#include "Poco/DeflatingStream.h"
+
+
+#line 7 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+
+#include "../SingletonManager/SessionManager.h"
+#include "../model/User.h"
+#include "Poco/Net/HTTPCookie.h"
+
+enum PageState
+{
+ PAGE_VERIFICATION_FAILED,
+ PAGE_ASK_PASSPHRASE,
+ PAGE_SHOW_PASSPHRASE,
+ PAGE_ASK_VERIFICATION_CODE
+};
+
+
+CheckEmailPage::CheckEmailPage(Session* arg):
+ SessionHTTPRequestHandler(arg)
+{
+}
+
+
+void CheckEmailPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response)
+{
+ response.setChunkedTransferEncoding(true);
+ response.setContentType("text/html");
+ bool _compressResponse(request.hasToken("Accept-Encoding", "gzip"));
+ if (_compressResponse) response.set("Content-Encoding", "gzip");
+
+ Poco::Net::HTMLForm form(request, request.stream());
+#line 20 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+
+ auto sm = SessionManager::getInstance();
+ bool hasErrors = false;
+ unsigned long long verificationCode = 0;
+ PageState state = PAGE_ASK_PASSPHRASE;
+ std::string uri = request.getURI();
+ //printf("uri: %s\n", uri.data());
+
+ if(!form.empty()) {
+ try {
+ verificationCode = stoll(form.get("email-verification-code", "0"));
+ } catch(...) {}
+ }
+ if(!verificationCode) {
+ size_t pos = uri.find_last_of("/");
+ try {
+ verificationCode = stoll(uri.substr(pos+1));
+ } catch(...) {}
+ }
+ if(!verificationCode) {
+ state = PAGE_ASK_VERIFICATION_CODE;
+ } else {
+ // no session
+ if(!mSession || mSession->getEmailVerificationCode() != verificationCode) {
+ mSession = sm->findByEmailVerificationCode(verificationCode);
+ }
+ // no session in server, load from db
+ if(!mSession) {
+ mSession = sm->getNewSession();
+ if(mSession->loadFromEmailVerificationCode(verificationCode)) {
+ auto cookie_id = mSession->getHandle();
+ auto user_host = request.clientAddress().host();
+ mSession->setClientIp(user_host);
+ response.addCookie(Poco::Net::HTTPCookie("user", std::to_string(cookie_id)));
+ } else {
+ sm->releseSession(mSession);
+ mSession = nullptr;
+ state = PAGE_VERIFICATION_FAILED;
+ }
+ }
+ if(mSession) {
+ mSession->updateEmailVerification(verificationCode);
+ hasErrors = mSession->errorCount() > 0;
+
+ if(!hasErrors && !form.empty()) {
+ auto registerKeyChoice = form.get("register-key", "");
+ std::string oldPassphrase = "";
+ if(registerKeyChoice == "no") {
+ auto oldPassphrase = form.get("register-key-existing", "");
+
+ if(oldPassphrase != "" && User::validatePassphrase(oldPassphrase)) {
+ // passphrase is valid
+ mSession->setPassphrase(oldPassphrase);
+ mSession->updateState(SESSION_STATE_PASSPHRASE_SHOWN);
+ state = PAGE_SHOW_PASSPHRASE;
+ } else {
+ mSession->addError(new Error("Merkspruch", "Dieser Merkspruch ist ungültig, bitte überprüfen oder neu generieren (lassen)."));
+ }
+ } else if(registerKeyChoice == "yes") {
+ mSession->generatePassphrase();
+ state = PAGE_SHOW_PASSPHRASE;
+ }
+ }
+ } else {
+ state = PAGE_VERIFICATION_FAILED;
+ }
+ }
+ std::ostream& _responseStream = response.send();
+ Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
+ std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream;
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << " \n";
+ responseStream << " \n";
+ responseStream << "Gradido Login Server: Email OptIn \n";
+ responseStream << "\n";
+ responseStream << " \n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\t";
+#line 108 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ if(mSession && hasErrors) { responseStream << "\n";
+ responseStream << "\t\t";
+#line 109 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ responseStream << ( mSession->getErrorsHtml() );
+ responseStream << "\n";
+ responseStream << "\t";
+#line 110 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+} responseStream << "\n";
+ responseStream << "\t
Einen neuen Account anlegen \n";
+ responseStream << "\t";
+#line 112 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ if(state == PAGE_SHOW_PASSPHRASE) { responseStream << "\n";
+ responseStream << "\t\t
\n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t\t\tSchreibe dir den Merkspruch auf und packe ihn gut weg. Du brauchst ihn um deine Adresse wiederherzustellen. Wenn du ihn verlierst, sind auch deine Gradidos verloren.\n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t\t\t";
+#line 118 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ responseStream << ( mSession->getPassphrase() );
+ responseStream << "\n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t\t
Weiter \n";
+ responseStream << "\t\t
\n";
+ responseStream << "\t";
+#line 122 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } else if(state == PAGE_ASK_PASSPHRASE) { responseStream << "\n";
+ responseStream << "\t
\n";
+ responseStream << "\t";
+#line 141 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } else if(state == PAGE_ASK_VERIFICATION_CODE) { responseStream << "\n";
+ responseStream << "\t
\n";
+ responseStream << "\t\tBitte gebe deinen E-Mail Verification Code ein.
\n";
+ responseStream << "\t\t \n";
+ responseStream << "\t\t \n";
+ responseStream << "\t \n";
+ responseStream << "\t";
+#line 147 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } else if(state == PAGE_VERIFICATION_FAILED) { responseStream << "\n";
+ responseStream << "\t\t";
+#line 148 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ if(mSession) { responseStream << "\n";
+ responseStream << "\t\t\t";
+#line 149 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ if(mSession->getSessionState() == SESSION_STATE_EMAIL_VERIFICATION_SEND) { responseStream << "\n";
+ responseStream << "\t\t\t\t
Bitte versuche es erneut
\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 \n";
+ responseStream << "\t\t\t";
+#line 155 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } else if(mSession->getSessionState() < SESSION_STATE_EMAIL_VERIFICATION_SEND) { responseStream << "\n";
+ responseStream << "\t\t\t\t
Die E-Mail wurde nicht verschickt, bitte habe noch etwas Geduld.
\n";
+ responseStream << "\t\t\t";
+#line 157 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } else { responseStream << "\n";
+ responseStream << "\t\t\t\t
Der Account wurde schon freigeschaltet.
\n";
+ responseStream << "\t\t\t\t
Zurück \n";
+ responseStream << "\t\t\t";
+#line 160 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } responseStream << "\n";
+ responseStream << "\t\t";
+#line 161 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } else { responseStream << "\n";
+ responseStream << "\t\t\t
Fehler, bitte wende dich an den Server-Admin order versuche dich erneut zu registrieren.
\n";
+ responseStream << "\t\t";
+#line 163 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } responseStream << "\n";
+ responseStream << "\t";
+#line 164 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } else { responseStream << "\n";
+ responseStream << "\t\t
\n";
+ responseStream << "\t\t\tUngültige Seite, wenn du das siehst stimmt hier was nicht. Bitte wende dich an den Server-Admin. \n";
+ responseStream << "\t\t
\n";
+ responseStream << "\t";
+#line 168 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\checkEmail.cpsp"
+ } responseStream << "\n";
+ responseStream << "
\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ if (_compressResponse) _gzipStream.close();
+}
diff --git a/src/cpp/HTTPInterface/CheckEmailPage.h b/src/cpp/HTTPInterface/CheckEmailPage.h
new file mode 100644
index 000000000..69ba01e00
--- /dev/null
+++ b/src/cpp/HTTPInterface/CheckEmailPage.h
@@ -0,0 +1,20 @@
+#ifndef CheckEmailPage_INCLUDED
+#define CheckEmailPage_INCLUDED
+
+
+#include "Poco/Net/HTTPRequestHandler.h"
+
+
+#include "SessionHTTPRequestHandler.h"
+
+
+class CheckEmailPage: public SessionHTTPRequestHandler
+{
+public:
+ CheckEmailPage(Session*);
+
+ void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response);
+};
+
+
+#endif // CheckEmailPage_INCLUDED
diff --git a/src/cpp/HTTPInterface/DashboardPage.cpp b/src/cpp/HTTPInterface/DashboardPage.cpp
new file mode 100644
index 000000000..5bb79c95a
--- /dev/null
+++ b/src/cpp/HTTPInterface/DashboardPage.cpp
@@ -0,0 +1,71 @@
+#include "DashboardPage.h"
+#include "Poco/Net/HTTPServerRequest.h"
+#include "Poco/Net/HTTPServerResponse.h"
+#include "Poco/Net/HTMLForm.h"
+#include "Poco/DeflatingStream.h"
+
+
+#line 7 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\dashboard.cpsp"
+
+#include "../SingletonManager/SessionManager.h"
+
+
+DashboardPage::DashboardPage(Session* arg):
+ SessionHTTPRequestHandler(arg)
+{
+}
+
+
+void DashboardPage::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());
+ std::ostream& _responseStream = response.send();
+ Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
+ std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream;
+ responseStream << "\n";
+#line 10 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\dashboard.cpsp"
+
+ //Poco::Net::NameValueCollection cookies;
+ //request.getCookies(cookies);
+ if(!form.empty()) {
+ //form.get("email-verification-code")
+ }
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << " \n";
+ responseStream << " \n";
+ responseStream << "Gradido Login Server: Dashboard \n";
+ responseStream << "\n";
+ responseStream << " \n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\t
Willkommen ";
+#line 28 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\dashboard.cpsp"
+ responseStream << ( mSession->getUser()->getName() );
+ responseStream << " \n";
+ responseStream << "\t
Status \n";
+ responseStream << "\t
";
+#line 30 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\dashboard.cpsp"
+ responseStream << ( mSession->getSessionStateString() );
+ responseStream << "
\n";
+ responseStream << "\t";
+#line 31 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\dashboard.cpsp"
+ if(mSession->getSessionState() == SESSION_STATE_EMAIL_VERIFICATION_SEND) responseStream << "\n";
+ responseStream << "\t
Verification Code E-Mail wurde erfolgreich an dich verschickt, bitte schaue auch in dein Spam-Verzeichnis nach wenn du sie nicht findest und klicke auf den Link den du dort findest oder kopiere den Code hier her:
\n";
+ responseStream << "\t
\n";
+ responseStream << "\t\t \n";
+ responseStream << "\t\t \n";
+ responseStream << "\t \n";
+ responseStream << "
\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ if (_compressResponse) _gzipStream.close();
+}
diff --git a/src/cpp/HTTPInterface/DashboardPage.h b/src/cpp/HTTPInterface/DashboardPage.h
new file mode 100644
index 000000000..2eb8fb54b
--- /dev/null
+++ b/src/cpp/HTTPInterface/DashboardPage.h
@@ -0,0 +1,20 @@
+#ifndef DashboardPage_INCLUDED
+#define DashboardPage_INCLUDED
+
+
+#include "Poco/Net/HTTPRequestHandler.h"
+
+
+#include "SessionHTTPRequestHandler.h"
+
+
+class DashboardPage: public SessionHTTPRequestHandler
+{
+public:
+ DashboardPage(Session*);
+
+ void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response);
+};
+
+
+#endif // DashboardPage_INCLUDED
diff --git a/src/cpp/HTTPInterface/EmailOptInPage.cpp b/src/cpp/HTTPInterface/EmailOptInPage.cpp
new file mode 100644
index 000000000..b554e9084
--- /dev/null
+++ b/src/cpp/HTTPInterface/EmailOptInPage.cpp
@@ -0,0 +1,138 @@
+#include "EmailOptInPage.h"
+#include "Poco/Net/HTTPServerRequest.h"
+#include "Poco/Net/HTTPServerResponse.h"
+#include "Poco/Net/HTMLForm.h"
+#include "Poco/DeflatingStream.h"
+
+
+#line 4 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\emailOptIn.cpsp"
+
+#include "../SingletonManager/SessionManager.h"
+#include "Poco/Net/HTTPCookie.h"
+
+
+void EmailOptInPage::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 8 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\emailOptIn.cpsp"
+
+ auto session = SessionManager::getInstance()->getNewSession();
+ bool userReturned = false;
+ if(!form.empty()) {
+ userReturned = session->createUser(
+ form.get("register-name"),
+ form.get("register-email"),
+ form.get("register-password")
+ );
+ if(userReturned) {
+ auto cookie_id = session->getHandle();
+ auto user_host = request.clientAddress().toString();
+ printf("cookie: %d, user_host: %s\n", cookie_id, user_host.data());
+ response.addCookie(Poco::Net::HTTPCookie("user", std::to_string(cookie_id)));
+ }
+ }
+ std::ostream& _responseStream = response.send();
+ Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
+ std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream;
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << " \n";
+ responseStream << " \n";
+ responseStream << "Gradido Login Server: Email OptIn \n";
+ responseStream << "\n";
+ responseStream << " \n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ if (_compressResponse) _gzipStream.close();
+}
diff --git a/src/cpp/HTTPInterface/EmailOptInPage.h b/src/cpp/HTTPInterface/EmailOptInPage.h
new file mode 100644
index 000000000..81f2a8236
--- /dev/null
+++ b/src/cpp/HTTPInterface/EmailOptInPage.h
@@ -0,0 +1,15 @@
+#ifndef EmailOptInPage_INCLUDED
+#define EmailOptInPage_INCLUDED
+
+
+#include "Poco/Net/HTTPRequestHandler.h"
+
+
+class EmailOptInPage: public Poco::Net::HTTPRequestHandler
+{
+public:
+ void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response);
+};
+
+
+#endif // EmailOptInPage_INCLUDED
diff --git a/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp b/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp
index 1a2f66f7d..8ce01c1f8 100644
--- a/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp
+++ b/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp
@@ -8,10 +8,12 @@
#include "HandleFileRequest.h"
#include "DashboardPage.h"
#include "CheckEmailPage.h"
+#include "SaveKeysPage.h"
#include "../SingletonManager/SessionManager.h"
PageRequestHandlerFactory::PageRequestHandlerFactory()
+ : mRemoveGETParameters("^/([a-zA-Z0-9_-]*)")
{
}
@@ -21,7 +23,10 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
//printf("request uri: %s\n", request.getURI().data());
std::string uri = request.getURI();
+ std::string url_first_part;
+ mRemoveGETParameters.extract(uri, url_first_part);
+ printf("[PageRequestHandlerFactory] uri: %s, first part: %s\n", uri.data(), url_first_part.data());
auto referer = request.find("Referer");
if (referer != request.end()) {
printf("referer: %s\n", referer->second.data());
@@ -38,11 +43,15 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
} catch (...) {}
auto sm = SessionManager::getInstance();
auto s = sm->getSession(session_id);
- if (uri == "/checkEmail") {
+
+
+ if (url_first_part == "/checkEmail") {
return new CheckEmailPage(s);
}
if (s) {
-
+ if (uri == "/saveKeys") {
+ return new SaveKeysPage(s);
+ }
return new DashboardPage(s);
} else {
diff --git a/src/cpp/HTTPInterface/PageRequestHandlerFactory.h b/src/cpp/HTTPInterface/PageRequestHandlerFactory.h
index 765f50da3..3ab68b970 100644
--- a/src/cpp/HTTPInterface/PageRequestHandlerFactory.h
+++ b/src/cpp/HTTPInterface/PageRequestHandlerFactory.h
@@ -2,7 +2,7 @@
#define __DR_PAGE_REQUEST_HANDLER_FACTORY_H
#include "Poco/Net/HTTPRequestHandlerFactory.h"
-
+#include "Poco/RegularExpression.h"
#define HTTP_PAGES_COUNT 1
@@ -14,6 +14,7 @@ public:
Poco::Net::HTTPRequestHandler* createRequestHandler(const Poco::Net::HTTPServerRequest& request);
protected:
+ Poco::RegularExpression mRemoveGETParameters;
};
#endif // __DR_PAGE_REQUEST_HANDLER_FACTORY_H
\ No newline at end of file
diff --git a/src/cpp/HTTPInterface/RegisterPage.cpp b/src/cpp/HTTPInterface/RegisterPage.cpp
index 7628cdce1..00903afbb 100644
--- a/src/cpp/HTTPInterface/RegisterPage.cpp
+++ b/src/cpp/HTTPInterface/RegisterPage.cpp
@@ -23,12 +23,17 @@ void RegisterPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne
auto session = SessionManager::getInstance()->getNewSession();
bool userReturned = false;
+
if(!form.empty()) {
- userReturned = session->createUser(
- form.get("register-name"),
- form.get("register-email"),
- form.get("register-password")
- );
+ if(form.get("register-password2") != form.get("register-password")) {
+ session->addError(new Error("Passwort", "Passwörter sind nicht identisch."));
+ } else {
+ userReturned = session->createUser(
+ form.get("register-name"),
+ form.get("register-email"),
+ form.get("register-password")
+ );
+ }
if(userReturned) {
auto cookie_id = session->getHandle();
//auto user_host_string = request.clientAddress().toString();
@@ -64,7 +69,7 @@ void RegisterPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne
responseStream << "\n";
responseStream << "\t
Einen neuen Account anlegen \n";
responseStream << "\t";
-#line 48 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
+#line 53 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
if(!form.empty() && userReturned) { responseStream << "\n";
responseStream << "\t\t\n";
responseStream << "\t\t
\n";
@@ -79,19 +84,19 @@ void RegisterPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne
responseStream << "\t\t\t
\n";
responseStream << "\t\t
\n";
responseStream << "\t";
-#line 61 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
+#line 66 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
} else { responseStream << "\n";
responseStream << "\t\n";
responseStream << "\t\n";
responseStream << "\t\t";
-#line 64 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
+#line 69 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
if(!form.empty() && !userReturned) { responseStream << "\n";
responseStream << "\t\t\t";
-#line 65 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
+#line 70 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
responseStream << ( session->getErrorsHtml() );
responseStream << "\n";
responseStream << "\t\t";
-#line 66 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
+#line 71 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
} responseStream << "\n";
responseStream << "\t\t\n";
responseStream << "\t\t\tAccount anlegen \n";
@@ -99,14 +104,14 @@ void RegisterPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne
responseStream << "\t\t\t\n";
responseStream << "\t\t\t\tVorname \n";
responseStream << "\t\t\t\t \n";
responseStream << "\t\t\t
\n";
responseStream << "\t\t\t\n";
responseStream << "\t\t\t\tE-Mail \n";
responseStream << "\t\t\t\t \n";
responseStream << "\t\t\t
\n";
@@ -114,12 +119,16 @@ void RegisterPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne
responseStream << "\t\t\t\tPasswort \n";
responseStream << "\t\t\t\t \n";
responseStream << "\t\t\t
\n";
+ responseStream << "\t\t\t\n";
+ responseStream << "\t\t\t\tPasswort Bestätigung \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 86 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
+#line 95 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\register.cpsp"
} responseStream << "\n";
responseStream << "\n";
responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\t";
+#line 40 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\saveKeys.cpsp"
+ if(hasErrors) { responseStream << "\n";
+ responseStream << "\t\t";
+#line 41 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\saveKeys.cpsp"
+ responseStream << ( mSession->getErrorsHtml() );
+ responseStream << "\n";
+ responseStream << "\t";
+#line 42 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\saveKeys.cpsp"
+} responseStream << "\n";
+ responseStream << "\t
Daten speichern \n";
+ responseStream << "\t
\n";
+ responseStream << "\t\t\n";
+ responseStream << "\t\t\tGradido Private Key speichern \n";
+ responseStream << "\t\t\t\n";
+ responseStream << "\t\t\t\t
Möchtest du deinen Gradido Private Key auf dem Server mit deinem Passwort verschlüsselt speichern?
\n";
+ responseStream << "\t\t\t\t
Wenn du ihn speicherst brauchst du dich in Zukunft nur mit deiner E-Mail und deinem Passwort einzuloggen.
\n";
+ responseStream << "\t\t\t\t
Wenn du ihn nicht speicherst, müsstest du jedes mal wenn du eine Transaktion machen willst, deine Passphrase hier reinkopieren.
\n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t\t\n";
+ responseStream << "\t\t\t\t \n";
+ responseStream << "\t\t\t\tJa, bitte speichern! \n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t\t";
+#line 56 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\saveKeys.cpsp"
+ if(!hasPassword) { responseStream << "\n";
+ responseStream << "\t\t\t\tIch brauche nochmal dein Passwort wenn du dich für ja entscheidest.
\n";
+ responseStream << "\t\t\t\t\n";
+ responseStream << "\t\t\t\t\tPasswort \n";
+ responseStream << "\t\t\t\t\t \n";
+ responseStream << "\t\t\t\t
\n";
+ responseStream << "\t\t\t";
+#line 62 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\saveKeys.cpsp"
+ } responseStream << "\n";
+ responseStream << "\t\t\t\n";
+ responseStream << "\t\t\t\t \n";
+ responseStream << "\t\t\t\tNein, ich kümmere mich selbst darum! \n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t \n";
+ responseStream << "\t\t\n";
+ responseStream << "\t\t\tPassphrase speichern \n";
+ responseStream << "\t\t\t\n";
+ responseStream << "\t\t\t\t
Möchtest du deine Passphrase mit dem Server-Admin-Key verschlüsselt auf dem Server gespeichert haben?
\n";
+ responseStream << "\t\t\t\t
Dann kann dir der Server-Admin deine Passphrase zuschicken wenn du sie verlegt hast.
\n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t\t\n";
+ responseStream << "\t\t\t\t \n";
+ responseStream << "\t\t\t\tJa, bitte speichern! \n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t\t\n";
+ responseStream << "\t\t\t\t \n";
+ responseStream << "\t\t\t\tNein, ich vertraue nur mir selbst! \n";
+ responseStream << "\t\t\t
\n";
+ responseStream << "\t\t \n";
+ responseStream << "\t\t \n";
+ responseStream << "\t \n";
+ responseStream << "
\n";
+ responseStream << "\n";
diff --git a/src/cpp/HTTPInterface/SaveKeysPage.cpp b/src/cpp/HTTPInterface/SaveKeysPage.cpp
new file mode 100644
index 000000000..21a74ab9c
--- /dev/null
+++ b/src/cpp/HTTPInterface/SaveKeysPage.cpp
@@ -0,0 +1,121 @@
+#include "SaveKeysPage.h"
+#include "Poco/Net/HTTPServerRequest.h"
+#include "Poco/Net/HTTPServerResponse.h"
+#include "Poco/Net/HTMLForm.h"
+#include "Poco/DeflatingStream.h"
+
+
+#line 7 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\saveKeys.cpsp"
+
+
+#include "../model/Session.h"
+
+
+
+SaveKeysPage::SaveKeysPage(Session* arg):
+ SessionHTTPRequestHandler(arg)
+{
+}
+
+
+void SaveKeysPage::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 12 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\saveKeys.cpsp"
+
+
+ bool hasErrors = mSession->errorCount() > 0;
+ bool hasPassword = mSession->getUser()->hasCryptoKey();
+
+ if(!form.empty()) {
+ }
+ std::ostream& _responseStream = response.send();
+ Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
+ std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream;
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "\n";
+ responseStream << "