adding fix for rare occasion if mysql connection failed during test if user exist,

This commit is contained in:
Dario 2020-05-01 12:20:12 +02:00
parent 8b9614cb00
commit 24c37fe11e
3 changed files with 19 additions and 7 deletions

View File

@ -197,14 +197,21 @@ void HandleElopageRequestTask::writeUserIntoDB()
}
int HandleElopageRequestTask::getUserIdFromDB()
int HandleElopageRequestTask::getUserIdFromDB(bool checkEmail /* = false*/)
{
auto cm = ConnectionManager::getInstance();
auto session = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER);
Poco::Data::Statement select(session);
std::vector<int> user_ids;
select << "SELECT id from users where email = ?;",
into(user_ids), use(mEmail);
std::vector<bool> email_checked;
if (checkEmail) {
select << "SELECT id, email_checked from users where email = ?;",
into(user_ids), into(email_checked), use(mEmail);
}
else {
select << "SELECT id from users where email = ?;",
into(user_ids), use(mEmail);
}
try {
select.execute();
}
@ -226,6 +233,10 @@ int HandleElopageRequestTask::getUserIdFromDB()
sendErrorsAsEmail();
}
if (user_ids.size() >= 1) {
if (email_checked.size() >= 1 && email_checked[0]) {
addError(new Error("HandleElopageRequestTask::getUserIdFromDB", "user account already activated"));
return 0;
}
return user_ids[0];
}
return 0;
@ -333,8 +344,9 @@ int HandleElopageRequestTask::run()
writeUserIntoDB();
// get user id from db
int user_id = getUserIdFromDB();
int user_id = getUserIdFromDB(true);
// we didn't get a user_id, something went wrong
// maybe user already exist
if (!user_id) {
addError(new Error("User loadEntryDBId", "user_id is zero"));
addError(param_error_order_id);

View File

@ -28,7 +28,7 @@ protected:
// return true if at least one entry in db with this email exist
bool validateInput();
void writeUserIntoDB();
int getUserIdFromDB();
int getUserIdFromDB(bool checkEmail = false);
Poco::Net::NameValueCollection mRequestData;
std::string mEmail;

View File

@ -99,14 +99,14 @@ enum PageState
<p><label style="width:auto" for="memo-text">E-Mail Text:</label></p>
<pre>Liebe(r) <%= user->getModel()->getFirstName() %>,
hier findst du deine Passphrase mit dessen Hilfe du dir ein neues Passwort einstellen kannst.
hier findest du deine Passphrase mit dessen Hilfe du dir ein neues Passwort einstellen kannst.
Bitte schreibe sie dir auf und packe sie gut weg.
<%= controller::UserBackups::formatPassphrase(userBackup->getPassphrase(ServerConfig::Mnemonic_Types::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER)) %>
Unter diesem Link kannst du dir mit hilfe der Passphrase ein neues Passwort setzen:
Unter diesem Link kannst du dir mit Hilfe der Passphrase ein neues Passwort setzen:
<%= code->getLink() %>