Метод sendResetLink
Метод sendResetLink класса Password предназначен
для инициирования процесса восстановления пароля. Он принимает
массив с данными пользователя, обычно содержащий поле 'email',
и отправляет на указанный адрес ссылку для сброса пароля.
Метод возвращает строковый код статуса, который позволяет
определить результат операции: успешно ли отправлена ссылка
или произошла ошибка.
Первым параметром метод принимает массив с данными (обязательно должен содержать ключ 'email'), вторым параметром можно передать замыкание, которое будет вызвано после успешной отправки письма.
Синтаксис
<?php
use Illuminate\Support\Facades\Password;
$status = Password::sendResetLink($credentials);
$status = Password::sendResetLink($credentials, $callback);
?>
Пример
Давайте отправим ссылку для восстановления пароля пользователю с почтой 'user@example.com':
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
public function sendResetLink(Request $request)
{
$request->validate(['email' => 'required|email']);
$credentials = ['email' => $request->email];
$status = Password::sendResetLink($credentials);
if ($status === Password::RESET_LINK_SENT) {
echo "Password reset link sent successfully";
} else {
echo "Failed to send reset link: " . $status;
}
}
}
?>
Результат выполнения кода при успешной отправке:
"Password reset link sent successfully"
Результат выполнения кода при ошибке:
"Failed to send reset link: passwords.user"
Пример
Используем метод с колбэком для дополнительной логики после отправки письма. Колбэк получает объект пользователя и отправляемое уведомление:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
public function sendResetLink(Request $request)
{
$request->validate(['email' => 'required|email']);
$status = Password::sendResetLink(
['email' => $request->email],
function ($user, $token) {
echo "Token generated for user: " . $user->email;
}
);
if ($status === Password::RESET_LINK_SENT) {
echo " - Link sent successfully";
} else {
echo " - Failed to send link";
}
}
}
?>
Результат выполнения кода:
"Token generated for user: user@example.com - Link sent successfully"
Пример
Обрабатываем все возможные статусы ответа. Метод может
возвращать различные строки-константы из класса
Password:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
public function sendResetLink(Request $request)
{
$request->validate(['email' => 'required|email']);
$status = Password::sendResetLink(
$request->only('email')
);
switch ($status) {
case Password::RESET_LINK_SENT:
echo "Reset link sent to your email address";
break;
case Password::INVALID_USER:
echo "We can't find a user with that email address";
break;
case Password::RESET_THROTTLED:
echo "Please wait before retrying";
break;
default:
echo "An error occurred";
break;
}
}
}
?>
Результат выполнения кода при успешной отправке:
"Reset link sent to your email address"