Как сделать отправку письма с новым паролем в laravel?

Пользователь

от william_stoltenberg , в категории: PHP , год назад

Как сделать отправку письма с новым паролем в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от deshaun_cormier , год назад

@william_stoltenberg 

Для отправки письма с новым паролем в Laravel необходимо выполнить следующие шаги:

  1. Настроить отправку электронной почты в Laravel, используя подходящий драйвер для вашего почтового сервиса. Это можно сделать в файле .env, указав необходимые параметры, такие как адрес электронной почты, пароль и сервер исходящей почты.
  2. Создать маршрут для страницы сброса пароля в файле routes/web.php. Этот маршрут должен быть связан с методом showResetForm контроллера ForgotPasswordController.
1
Route::get('password/reset/{token}', 'AuthForgotPasswordController@showResetForm')->name('password.reset');


  1. Создать шаблон письма для отправки нового пароля. Для этого можно использовать встроенный шаблон resources/views/auth/passwords/reset.blade.php, который можно настроить под свои нужды.
  2. Создать метод reset контроллера ResetPasswordController, который будет обрабатывать запрос на сброс пароля. В этом методе нужно убедиться, что токен действителен, и обновить пароль пользователя.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public function reset(Request $request)
{
    $this->validate($request, [
        'token' => 'required',
        'email' => 'required|email',
        'password' => 'required|confirmed|min:8',
    ]);

    $credentials = $request->only(
        'email', 'password', 'password_confirmation', 'token'
    );

    $response = $this->broker()->reset(
        $credentials, function ($user, $password) {
            $this->resetPassword($user, $password);
        }
    );

    if ($response == Password::PASSWORD_RESET) {
        return redirect()->route('login')->with('status', trans($response));
    }

    return back()
        ->withInput($request->only('email'))
        ->withErrors(['email' => trans($response)]);
}


  1. Создать метод sendResetLinkEmail контроллера ForgotPasswordController, который будет отправлять письмо со ссылкой на страницу сброса пароля.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public function sendResetLinkEmail(Request $request)
{
    $this->validateEmail($request);

    $response = $this->broker()->sendResetLink(
        $request->only('email')
    );

    return $response == Password::RESET_LINK_SENT
                ? back()->with('status', trans($response))
                : back()->withErrors(['email' => trans($response)]);
}


  1. Обновить настройки почтовой конфигурации в файле config/mail.php, чтобы указать, какой шаблон использовать для отправки письма сброса пароля.
1
2
3
4
5
6
'passwords' => [
    'provider' => 'users',
    'email' => 'auth.emails.password',
    'table' => 'password_resets',
    'expire' => 60,
],


Теперь при запросе на страницу сброса пароля, пользователь получит пись