<?php
// Маршруты запроса ссылки для сброса пароля
Route::get('password/email', 'Auth\PasswordController@getEmail');
Route::post('password/email', 'Auth\PasswordController@postEmail');
// Маршруты сброса пароля
Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');
Route::post('password/reset', 'Auth\PasswordController@postReset');
?>
При выполнении Artisan команды "make:auth" создаются представления для формы восстановления пароля и ввода нового. Эти представления находятся по адресу
Помимо определения маршрутов необходимо самостоятельно сделать и представления для формы запроса ссылки на сброс пароля и формы установки нового пароля пароля. Рассмотрим примеры простейших содержаний этих представления
resources/views/auth/passwords
.Запрос восстановления пароля
Это представление должно находиться по адресуresources/views/auth/password.blade.php
. В форме есть только поле для ввода мэйла и кнопка для отправки письма со ссылкой на восстановление пароля:
<!-- resources/views/auth/password.blade.php -->
<form method="POST" action="/password/email">
{!! csrf_field() !!}
@if (count($errors) > 0)
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
Email:
<input type="email" name="email" value="{{ old('email') }}">
<br>
<button type="submit">
Отправить инструкции по
восстановлению пароля на почту
</button>
</form>
Почтовое сообщение со ссылкой
После заполнения этой формы пользователь получит письмо со ссылкой, которая ведёт на форму ввода нового пароля. Для этого письма необходимо создать своё представление и поместить по адресу/views/emails/password.blade.php
:
<!-- resources/views/emails/password.blade.php -->
Перейдите по этой ссылке для задания нового пароля:
{{ url('password/reset/'.$token) }}
Форма задания нового пароля
После перехода по ссылке пользователь попадёт на представление для изменения пароля. Оно должно находиться в файле/views/emails/password.blade.php
. И выглядеть может так:
<!-- resources/views/auth/reset.blade.php -->
<form method="POST" action="/password/reset">
{!! csrf_field() !!}
<input type="hidden" name="token" value="{{ $token }}">
@if (count($errors) > 0)
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
Email
<input type="email" name="email" value="{{ old('email') }}">
<br>
Введите новый пароль:
<input type="password" name="password">
<br>
Подтвердите пароль:
<input type="password" name="password_confirmation">
<br>
<button type="submit">
Установить пароль
</button>
</form>
После сброса пароля пользователь автоматически будет отправлен на адрес "/home". Этот адрес можно переопределить, указав свойство "redirectTo" в "PasswordController":
protected $redirectTo = '/любой_uri';