diff --git a/src/cpp/HTTPInterface/LoginPage.cpp b/src/cpp/HTTPInterface/LoginPage.cpp
index f6a8ce3c0..d7e336114 100644
--- a/src/cpp/HTTPInterface/LoginPage.cpp
+++ b/src/cpp/HTTPInterface/LoginPage.cpp
@@ -321,17 +321,22 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
#line 180 "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 << " ";
+ responseStream << " \n";
+ responseStream << "\t\t\t\t\t\t";
+#line 182 "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";
responseStream << " \n";
responseStream << "\t\t\t\t\t\n";
diff --git a/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp b/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp
index b447fd8a6..d95f85706 100644
--- a/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp
+++ b/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp
@@ -35,6 +35,7 @@
#include "../SingletonManager/SessionManager.h"
#include "../lib/Profiler.h"
+#include "../lib/DataTypeConverter.h"
#include "../ServerConfig.h"
#include "../Crypto/DRRandom.h"
@@ -216,30 +217,8 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
}
}
auto sessionState = s->getSessionState();
- printf("session state: %s\n", s->getSessionStateString());
- if (url_first_part == "/updateUserPassword" && sessionState == SESSION_STATE_RESET_PASSWORD_REQUEST) {
- auto pageRequestHandler = new UpdateUserPasswordPage(s);
- pageRequestHandler->setProfiler(timeUsed);
- return pageRequestHandler;
- }
//printf("session state: %s\n", s->getSessionStateString());
- if(sessionState == SESSION_STATE_EMAIL_VERIFICATION_CODE_CHECKED ||
- sessionState == SESSION_STATE_PASSPHRASE_GENERATED ||
- sessionState == SESSION_STATE_RESET_PASSWORD_REQUEST) {
- //if (url_first_part == "/passphrase") {
- //return handlePassphrase(s, request);
- auto pageRequestHandler = new PassphrasePage(s);
- pageRequestHandler->setProfiler(timeUsed);
- return pageRequestHandler;
- }
- else if(sessionState == SESSION_STATE_PASSPHRASE_SHOWN) {
- //else if (uri == "/saveKeys") {
- auto pageRequestHandler = new SaveKeysPage(s);
- pageRequestHandler->setProfiler(timeUsed);
- return pageRequestHandler;
- }
- else if (sessionState == SESSION_STATE_RESET_PASSWORD_REQUEST) {
- //
+ if (url_first_part == "/updateUserPassword") {
auto pageRequestHandler = new UpdateUserPasswordPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
@@ -293,20 +272,8 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::handleCheckEmail(Sessi
// try to get code from uri parameter
if (!verificationCode) {
size_t pos = uri.find_last_of("/");
- try {
- auto str = uri.substr(pos + 1);
- verificationCode = stoull(uri.substr(pos + 1));
- } catch (const std::invalid_argument& ia) {
- std::cerr << __FUNCTION__ << " Invalid argument: " << ia.what() << ", str: " << uri.substr(pos + 1) << '\n';
- } catch (const std::out_of_range& oor) {
- std::cerr << __FUNCTION__ << " Out of Range error: " << oor.what() << '\n';
- }
- catch (const std::logic_error & ler) {
- std::cerr << __FUNCTION__ << " Logical error: " << ler.what() << '\n';
- }
- catch (...) {
- std::cerr << __FUNCTION__ << " Unknown error" << '\n';
- }
+ auto str = uri.substr(pos + 1);
+ DataTypeConverter::strToInt(str, verificationCode);
}
// if no verification code given or error with given code, show form
diff --git a/src/cpp/lib/DataTypeConverter.cpp b/src/cpp/lib/DataTypeConverter.cpp
index 07b7c3a0c..c300fefba 100644
--- a/src/cpp/lib/DataTypeConverter.cpp
+++ b/src/cpp/lib/DataTypeConverter.cpp
@@ -32,6 +32,29 @@ namespace DataTypeConverter
}
}
+ NumberParseState strToInt(const std::string& input, unsigned long long& result)
+ {
+ try {
+ result = stoull(input);
+ return NUMBER_PARSE_OKAY;
+ }
+ catch (const std::invalid_argument& ia)
+ {
+ printf("[strToInt] exception: invalid argument: %s\n", ia.what());
+ return NUMBER_PARSE_INVALID_ARGUMENT;
+ }
+ catch (const std::out_of_range& oor)
+ {
+ printf("[strToInt] exception: out or range: %s\n", oor.what());
+ return NUMBER_PARSE_OUT_OF_RANGE;
+ }
+ catch (const std::logic_error & ler)
+ {
+ printf("[strToInt] exception: logical error: %s\n", ler.what());
+ return NUMBER_PARSE_LOGIC_ERROR;
+ }
+ }
+
const char* numberParseStateToString(NumberParseState state)
{
switch (state) {
diff --git a/src/cpp/lib/DataTypeConverter.h b/src/cpp/lib/DataTypeConverter.h
index b7d6360a8..dd2d1444b 100644
--- a/src/cpp/lib/DataTypeConverter.h
+++ b/src/cpp/lib/DataTypeConverter.h
@@ -19,6 +19,7 @@ namespace DataTypeConverter {
};
NumberParseState strToInt(const std::string& input, int& result);
+ NumberParseState strToInt(const std::string& input, unsigned long long& result);
MemoryBin* hexToBin(const std::string& hexString);
MemoryBin* base64ToBin(const std::string& base64String);
diff --git a/src/cpsp/login.cpsp b/src/cpsp/login.cpsp
index c177882a4..a6ff89ca9 100644
--- a/src/cpsp/login.cpsp
+++ b/src/cpsp/login.cpsp
@@ -178,7 +178,9 @@