catch exception by calling load user

This commit is contained in:
Dario 2020-09-24 07:42:53 +02:00
parent d9132e1f98
commit 0aace4f027
2 changed files with 38 additions and 24 deletions

View File

@ -96,14 +96,21 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
} else {
langCatalog = mSession->getLanguageCatalog();
}
auto userState = mSession->loadUser(email, password);
UserStates user_state;
try {
user_state = mSession->loadUser(email, password);
} catch (Poco::Exception& ex) {
addError(new ParamError("login", "exception by calling loadUser: ", ex.displayText()));
sendErrorsAsEmail();
addError(new Error("Error", "Intern Server error, please try again later"));
}
auto user = mSession->getNewUser();
if(userState >= USER_LOADED_FROM_DB && !user->getModel()->getPublicKey()) {
if(user_state >= USER_LOADED_FROM_DB && !user->getModel()->getPublicKey()) {
if(mSession->generateKeys(true, true)) {
userState = USER_COMPLETE;
user_state = USER_COMPLETE;
if(user->getModel()->isDisabled()) {
userState = USER_DISABLED;
user_state = USER_DISABLED;
}
}
} else {
@ -114,9 +121,9 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
auto uri_start = request.serverParams().getServerName();
auto lastExternReferer = mSession->getLastReferer();
printf("userState: %d\n", userState);
printf("user_state: %d\n", user_state);
switch(userState) {
switch(user_state) {
case USER_EMPTY:
case USER_PASSWORD_INCORRECT:
addError(new Error(langCatalog->gettext("Login"), langCatalog->gettext("E-Mail or password isn't right, please try again!")), false);
@ -234,11 +241,11 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " </div>";
// end include header.cpsp
responseStream << "\n";
#line 160 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 167 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( getErrorsHtml() );
responseStream << "\n";
responseStream << "<!--<input type=\"hidden\" name=\"lang\" value=\"";
#line 161 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 168 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( LanguageManager::keyForLanguage(lang) );
responseStream << "\">-->\n";
responseStream << "<div class=\"center-form-container\">\n";
@ -272,22 +279,22 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << "\n";
responseStream << " <div class=\"center-form-form\">\n";
responseStream << "\t\t<form action=\"";
#line 165 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 172 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_serverPath );
responseStream << "/\" method=\"POST\">\n";
responseStream << "\t\t\t<input class=\"form-control\" type=\"text\" name=\"login-email\" placeholder=\"";
#line 166 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 173 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("E-Mail") );
responseStream << "\" value=\"";
#line 166 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 173 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( presetEmail );
responseStream << "\"/>\n";
responseStream << "\t\t\t<input class=\"form-control\" type=\"password\" name=\"login-password\" placeholder=\"";
#line 167 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 174 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Password") );
responseStream << "\" />\n";
responseStream << "\t\t <button type=\"submit\" name=\"submit\" class=\"center-form-submit form-button\">";
#line 168 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 175 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext(" Login ") );
responseStream << "</button>\n";
responseStream << "\t\t</form>\n";
@ -295,25 +302,25 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " <div class=\"center-form-bottom\">\n";
responseStream << " <div class=\"signup-link\">\n";
responseStream << "\t <p>";
#line 173 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 180 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("You haven't any account yet? Please follow the link to create one.") );
responseStream << "</p>\n";
responseStream << "\t <a href=\"";
#line 174 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 181 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_serverPath );
responseStream << "/registerDirect\">\n";
responseStream << "\t\t\t";
#line 175 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 182 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Create New Account") );
responseStream << "\n";
responseStream << "\t\t </a>\n";
responseStream << "\t </div>\n";
responseStream << "\t\t<div class=\"reset-pwd-link\">\n";
responseStream << "\t\t\t<a href=\"";
#line 179 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 186 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_serverPath );
responseStream << "/resetPassword\">";
#line 179 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
#line 186 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Passwort vergessen") );
responseStream << "</a>\n";
responseStream << "\t\t</div>\n";

View File

@ -75,14 +75,21 @@
} else {
langCatalog = mSession->getLanguageCatalog();
}
auto userState = mSession->loadUser(email, password);
UserStates user_state;
try {
user_state = mSession->loadUser(email, password);
} catch (Poco::Exception& ex) {
addError(new ParamError("login", "exception by calling loadUser: ", ex.displayText()));
sendErrorsAsEmail();
addError(new Error("Error", "Intern Server error, please try again later"));
}
auto user = mSession->getNewUser();
if(userState >= USER_LOADED_FROM_DB && !user->getModel()->getPublicKey()) {
if(user_state >= USER_LOADED_FROM_DB && !user->getModel()->getPublicKey()) {
if(mSession->generateKeys(true, true)) {
userState = USER_COMPLETE;
user_state = USER_COMPLETE;
if(user->getModel()->isDisabled()) {
userState = USER_DISABLED;
user_state = USER_DISABLED;
}
}
} else {
@ -93,9 +100,9 @@
auto uri_start = request.serverParams().getServerName();
auto lastExternReferer = mSession->getLastReferer();
printf("userState: %d\n", userState);
printf("user_state: %d\n", user_state);
switch(userState) {
switch(user_state) {
case USER_EMPTY:
case USER_PASSWORD_INCORRECT:
addError(new Error(langCatalog->gettext("Login"), langCatalog->gettext("E-Mail or password isn't right, please try again!")), false);