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"; responseStream << "\t\t\t\t\t\t"; -#line 184 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 186 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( langCatalog->gettext("Passwort vergessen") ); 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 @@