X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Flostpass.php;h=6505db549723fc540fb89b0257b8400c71eb576e;hb=5c8708f4c9cfe06bb0924a744f75a8b3bbc14296;hp=ecab0982c86d4f43a5d60e6dcbda724ffc547de2;hpb=36ba7fa79c7c2d4304f3423d84215771e3bb6a9f;p=friendica.git diff --git a/mod/lostpass.php b/mod/lostpass.php index ecab0982c8..6505db5497 100644 --- a/mod/lostpass.php +++ b/mod/lostpass.php @@ -1,48 +1,61 @@ . + * */ use Friendica\App; -use Friendica\Core\Config; -use Friendica\Core\L10n; use Friendica\Core\Renderer; -use Friendica\Core\System; use Friendica\Database\DBA; +use Friendica\DI; use Friendica\Model\User; use Friendica\Util\DateTimeFormat; use Friendica\Util\Strings; function lostpass_post(App $a) { - $loginame = Strings::escapeTags(trim($_POST['login-name'])); + $loginame = trim($_POST['login-name']); if (!$loginame) { - $a->internalRedirect(); + DI::baseUrl()->redirect(); } - $condition = ['(`email` = ? OR `nickname` = ?) AND `verified` = 1 AND `blocked` = 0', $loginame, $loginame]; + $condition = ['(`email` = ? OR `nickname` = ?) AND `verified` = 1 AND `blocked` = 0 AND `account_removed` = 0 AND `account_expired` = 0', $loginame, $loginame]; $user = DBA::selectFirst('user', ['uid', 'username', 'nickname', 'email', 'language'], $condition); if (!DBA::isResult($user)) { - notice(L10n::t('No valid account found.') . EOL); - $a->internalRedirect(); + DI::sysmsg()->addNotice(DI::l10n()->t('No valid account found.')); + DI::baseUrl()->redirect(); } - $pwdreset_token = Strings::getRandomName(12) . random_int(1000, 9999); + $pwdreset_token = Strings::getRandomHex(32); $fields = [ - 'pwdreset' => $pwdreset_token, + 'pwdreset' => hash('sha256', $pwdreset_token), 'pwdreset_time' => DateTimeFormat::utcNow() ]; $result = DBA::update('user', $fields, ['uid' => $user['uid']]); if ($result) { - info(L10n::t('Password reset request issued. Check your email.') . EOL); + DI::sysmsg()->addInfo(DI::l10n()->t('Password reset request issued. Check your email.')); } - $sitename = Config::get('config', 'sitename'); - $resetlink = System::baseUrl() . '/lostpass/' . $pwdreset_token; + $sitename = DI::config()->get('config', 'sitename'); + $resetlink = DI::baseUrl() . '/lostpass/' . $pwdreset_token; - $preamble = Strings::deindent(L10n::t(' + $preamble = Strings::deindent(DI::l10n()->t(' Dear %1$s, A request was recently received at "%2$s" to reset your account password. In order to confirm this request, please select the verification link @@ -53,7 +66,7 @@ function lostpass_post(App $a) Your password will not be changed unless we can verify that you issued this request.', $user['username'], $sitename)); - $body = Strings::deindent(L10n::t(' + $body = Strings::deindent(DI::l10n()->t(' Follow this link soon to verify your identity: %1$s @@ -64,30 +77,27 @@ function lostpass_post(App $a) The login details are as follows: Site Location: %2$s - Login Name: %3$s', $resetlink, System::baseUrl(), $user['nickname'])); - - notification([ - 'type' => SYSTEM_EMAIL, - 'language' => $user['language'], - 'to_name' => $user['username'], - 'to_email' => $user['email'], - 'uid' => $user['uid'], - 'subject' => L10n::t('Password reset requested at %s', $sitename), - 'preamble' => $preamble, - 'body' => $body - ]); + Login Name: %3$s', $resetlink, DI::baseUrl(), $user['nickname'])); - $a->internalRedirect(); + $email = DI::emailer() + ->newSystemMail() + ->withMessage(DI::l10n()->t('Password reset requested at %s', $sitename), $preamble, $body) + ->forUser($user) + ->withRecipient($user['email']) + ->build(); + + DI::emailer()->send($email); + DI::baseUrl()->redirect(); } function lostpass_content(App $a) { - if ($a->argc > 1) { - $pwdreset_token = $a->argv[1]; + if (DI::args()->getArgc() > 1) { + $pwdreset_token = DI::args()->getArgv()[1]; - $user = DBA::selectFirst('user', ['uid', 'username', 'nickname', 'email', 'pwdreset_time', 'language'], ['pwdreset' => $pwdreset_token]); + $user = DBA::selectFirst('user', ['uid', 'username', 'nickname', 'email', 'pwdreset_time', 'language'], ['pwdreset' => hash('sha256', $pwdreset_token)]); if (!DBA::isResult($user)) { - notice(L10n::t("Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed.")); + DI::sysmsg()->addNotice(DI::l10n()->t("Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed.")); return lostpass_form(); } @@ -100,7 +110,7 @@ function lostpass_content(App $a) ]; DBA::update('user', $fields, ['uid' => $user['uid']]); - notice(L10n::t('Request has expired, please make a new one.')); + DI::sysmsg()->addNotice(DI::l10n()->t('Request has expired, please make a new one.')); return lostpass_form(); } @@ -115,10 +125,10 @@ function lostpass_form() { $tpl = Renderer::getMarkupTemplate('lostpass.tpl'); $o = Renderer::replaceMacros($tpl, [ - '$title' => L10n::t('Forgot your Password?'), - '$desc' => L10n::t('Enter your email address and submit to have your password reset. Then check your email for further instructions.'), - '$name' => L10n::t('Nickname or Email: '), - '$submit' => L10n::t('Reset') + '$title' => DI::l10n()->t('Forgot your Password?'), + '$desc' => DI::l10n()->t('Enter your email address and submit to have your password reset. Then check your email for further instructions.'), + '$name' => DI::l10n()->t('Nickname or Email: '), + '$submit' => DI::l10n()->t('Reset') ]); return $o; @@ -133,25 +143,25 @@ function lostpass_generate_password($user) if (DBA::isResult($result)) { $tpl = Renderer::getMarkupTemplate('pwdreset.tpl'); $o .= Renderer::replaceMacros($tpl, [ - '$lbl1' => L10n::t('Password Reset'), - '$lbl2' => L10n::t('Your password has been reset as requested.'), - '$lbl3' => L10n::t('Your new password is'), - '$lbl4' => L10n::t('Save or copy your new password - and then'), - '$lbl5' => '' . L10n::t('click here to login') . '.', - '$lbl6' => L10n::t('Your password may be changed from the Settings page after successful login.'), + '$lbl1' => DI::l10n()->t('Password Reset'), + '$lbl2' => DI::l10n()->t('Your password has been reset as requested.'), + '$lbl3' => DI::l10n()->t('Your new password is'), + '$lbl4' => DI::l10n()->t('Save or copy your new password - and then'), + '$lbl5' => '' . DI::l10n()->t('click here to login') . '.', + '$lbl6' => DI::l10n()->t('Your password may be changed from the Settings page after successful login.'), '$newpass' => $new_password, ]); - info("Your password has been reset." . EOL); + DI::sysmsg()->addInfo(DI::l10n()->t("Your password has been reset.")); - $sitename = Config::get('config', 'sitename'); - $preamble = Strings::deindent(L10n::t(' + $sitename = DI::config()->get('config', 'sitename'); + $preamble = Strings::deindent(DI::l10n()->t(' Dear %1$s, Your password has been changed as requested. Please retain this information for your records ' . "\x28" . 'or change your password immediately to something that you will remember' . "\x29" . '. ', $user['username'])); - $body = Strings::deindent(L10n::t(' + $body = Strings::deindent(DI::l10n()->t(' Your login details are as follows: Site Location: %1$s @@ -159,18 +169,15 @@ function lostpass_generate_password($user) Password: %3$s You may change that password from your account settings page after logging in. - ', System::baseUrl(), $user['nickname'], $new_password)); - - notification([ - 'type' => SYSTEM_EMAIL, - 'language' => $user['language'], - 'to_name' => $user['username'], - 'to_email' => $user['email'], - 'uid' => $user['uid'], - 'subject' => L10n::t('Your password has been changed at %s', $sitename), - 'preamble' => $preamble, - 'body' => $body - ]); + ', DI::baseUrl(), $user['nickname'], $new_password)); + + $email = DI::emailer() + ->newSystemMail() + ->withMessage(DI::l10n()->t('Your password has been changed at %s', $sitename), $preamble, $body) + ->forUser($user) + ->withRecipient($user['email']) + ->build(); + DI::emailer()->send($email); } return $o;