Сброс и изменение пароля в Laravel

Для сброса паролей пользователей в Laravel используется типаж Illuminate\Auth\Passwords\CanResetPassword и модель App\User. А в контроллере Auth\PasswordController содержится логика для сброса пользовательских паролей. Поэтому для успешной работы этой функции остаётся тлько определить маршруты для запросов к контроллеру. К примеру, так:
<?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';
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб

⇡ наверх