/** * @param integer $userId * @return BOL_UserResetPassword */ public function getNewResetPassword($userId) { $resetPassword = new BOL_UserResetPassword(); $resetPassword->setUserId($userId); $resetPassword->setExpirationTimeStamp(time() + 24 * 3600); $resetPassword->setCode(md5(UTIL_String::generatePassword(8, 5))); $this->resetPasswordDao->save($resetPassword); return $resetPassword; }
public function processResetForm($data) { $language = OW::getLanguage(); $email = trim($data['email']); $user = $this->findByEmail($email); if ($user === null) { throw new LogicException($language->text('base', 'forgot_password_no_user_error_message')); } $resetPassword = $this->findResetPasswordByUserId($user->getId()); if ($resetPassword !== null) { if ($resetPassword->getUpdateTimeStamp() > time()) { throw new LogicException($language->text('base', 'forgot_password_request_exists_error_message')); } else { $resetPassword->setUpdateTimeStamp($resetPassword->getUpdateTimeStamp() + self::PASSWORD_RESET_CODE_UPDATE_TIME); $this->resetPasswordDao->save($resetPassword); } } else { $resetPassword = $this->getNewResetPassword($user->getId()); } $vars = array('code' => $resetPassword->getCode(), 'username' => $user->getUsername(), 'requestUrl' => OW::getRouter()->urlForRoute('base.reset_user_password_request'), 'resetUrl' => OW::getRouter()->urlForRoute('base.reset_user_password', array('code' => $resetPassword->getCode()))); $mail = OW::getMailer()->createMail(); $mail->addRecipientEmail($email); $mail->setSubject($language->text('base', 'reset_password_mail_template_subject')); $mail->setTextContent($language->text('base', 'reset_password_mail_template_content_txt', $vars)); $mail->setHtmlContent($language->text('base', 'reset_password_mail_template_content_html', $vars)); OW::getMailer()->send($mail); }