diff --git a/src/cpp/model/Session.cpp b/src/cpp/model/Session.cpp index f9590a3da..f733364d6 100644 --- a/src/cpp/model/Session.cpp +++ b/src/cpp/model/Session.cpp @@ -445,29 +445,28 @@ int Session::resetPassword(Poco::AutoPtr user, bool passphrase { mNewUser = user; mSessionUser = new User(user); + auto em = EmailManager::getInstance(); + + // creating email verification code also for user without passphrase + // first check if already exist + mEmailVerificationCodeObject = controller::EmailVerificationCode::create(mNewUser->getModel()->getID(), model::table::EMAIL_OPT_IN_RESET_PASSWORD); + auto foundCount = mEmailVerificationCodeObject->load(user->getModel()->getID(), model::table::EMAIL_OPT_IN_RESET_PASSWORD); + auto emailVerificationModel = mEmailVerificationCodeObject->getModel(); + + UniLib::controller::TaskPtr insertEmailVerificationCode( + new model::table::ModelInsertTask(emailVerificationModel, true, true) + ); + insertEmailVerificationCode->scheduleTask(insertEmailVerificationCode); + if (passphraseMemorized) { - // first check if already exist - - mEmailVerificationCodeObject = controller::EmailVerificationCode::create(mNewUser->getModel()->getID(), model::table::EMAIL_OPT_IN_RESET_PASSWORD); - auto foundCount = mEmailVerificationCodeObject->load(user->getModel()->getID(), model::table::EMAIL_OPT_IN_RESET_PASSWORD); - if (foundCount) { - return 1; - } - auto emailVerificationModel = mEmailVerificationCodeObject->getModel(); - - UniLib::controller::TaskPtr insertEmailVerificationCode( - new model::table::ModelInsertTask(emailVerificationModel, true, true) - ); - insertEmailVerificationCode->scheduleTask(insertEmailVerificationCode); - UniLib::controller::TaskPtr sendEmail(new SendEmailTask( - new model::Email(mEmailVerificationCodeObject, mNewUser, model::EMAIL_USER_RESET_PASSWORD), - ServerConfig::g_CPUScheduler, 1) - ); - sendEmail->setParentTaskPtrInArray(insertEmailVerificationCode, 0); - sendEmail->scheduleTask(sendEmail); + em->addEmail(new model::Email(mEmailVerificationCodeObject, mNewUser, model::EMAIL_USER_RESET_PASSWORD)); } else { - EmailManager::getInstance()->addEmail(new model::Email(user, model::EMAIL_ADMIN_RESET_PASSWORD_REQUEST_WITHOUT_MEMORIZED_PASSPHRASE)); + em->addEmail(new model::Email(user, model::EMAIL_ADMIN_RESET_PASSWORD_REQUEST_WITHOUT_MEMORIZED_PASSPHRASE)); + } + + if (foundCount) { + return 1; } return 0;