/** * Render and process forgot password form * * @param void * @return null */ function forgot_password() { if (isset($_GET['your_email'])) { $your_email = trim(array_var($_GET, 'your_email')); } else { $your_email = trim(array_var($_POST, 'your_email')); } tpl_assign('your_email', $your_email); if (array_var($_REQUEST, 'submited') == 'submited') { if (!is_valid_email($your_email)) { tpl_assign('error', new InvalidEmailAddressError($your_email, lang('invalid email address'))); $this->render(); } // if $user = Contacts::getByEmail($your_email); if (!($user instanceof Contact && $user->isUser()) || $user->getDisabled()) { flash_error(lang('email address not in use', $your_email)); $this->redirectTo('access', 'forgot_password'); } // if $token = sha1(gen_id() . (defined('SEED') ? SEED : '')); $timestamp = time() + 60 * 60 * 24; set_user_config_option('reset_password', $token . ";" . $timestamp, $user->getId()); try { DB::beginWork(); Notifier::forgotPassword($user, $token); flash_success(lang('success forgot password')); DB::commit(); } catch (Exception $e) { DB::rollback(); flash_error(lang('error forgot password')); } // try $this->redirectTo('access', 'forgot_password', array('instructions_sent' => 1)); } // if }
/** * Render and process forgot password form * * @param void * @return null */ function forgot_password() { $your_email = trim(array_var($_POST, 'your_email')); tpl_assign('your_email', $your_email); if (array_var($_POST, 'submitted') == 'submitted') { if (!is_valid_email($your_email)) { tpl_assign('error', new InvalidEmailAddressError($your_email, lang('invalid email address'))); $this->render(); } // if $user = Users::getByEmail($your_email); if (!$user instanceof User) { flash_error(lang('email address not in use', $your_email)); $this->redirectTo('access', 'forgot_password'); } // if try { Notifier::forgotPassword($user); flash_success(lang('success forgot password')); } catch (Exception $e) { flash_error(lang('error forgot password')); } // try $this->redirectTo('access', 'forgot_password'); } // if }