Сброс пароля

Содержание:


Введение

Для быстрого старта вы можете установить laravel/ui пакет Composer и запустить php artisan ui vue --auth для нового приложения Laravel. После запуска миграций вашей базы данных, наберитте в браузере http://your-app.test/register или любой другой URL, который существует в вашем приложении. С этого момента у вас есть полная система регистрации со всеми классами и представлениями и просто файлами, в том числе функция восстановления пароля.

Большинство веб приложений предоставляют способ для пользователей восстановить их забытый пароль. Вместо того, чтобы реалиозовывать такой функционал для каждого приложения, Laravel предлагает удобные методы для отправки сообщений и проведения восстановления пароля.

Перед использованием возможности Laravel восстановление пароля, вы должны использовать трейт Illuminate\Notifications\Notifiable.

Решение вопроса с БД

Для начала вы должны провести верификацию того, что модель App\User расширяет контракт Illuminate\Contracts\Auth\CanResetPassword. Модель App\User включена в фреймворк и уже расширяет этот интерфейс, и использует трейт Illuminate\Auth\Passwords\CanResetPassword для вкючения нужных методов необходимых для реализации интерфейса.

Генерация миграции таблицы восстановления токена

На следующем этапе должна быть создана таблица для хранения токенов восстановления паролей. Миграция для этой таблицы включена в Ларавел из коробки и находится в папке database/migrations. Поэтому, всё что вам нужно, это запустить мигарции базы данных:

php artisan migrate

Маршрутизация

Laravel includes Auth\ForgotPasswordController and Auth\ResetPasswordController classes that contains the logic necessary to e-mail password reset links and reset user passwords. All of the routes needed to perform password resets may be generated using the laravel/ui Composer package:

composer require laravel/ui --dev

php artisan ui vue --auth

Представления

Чтобы сгенерировать все необходимые представления для восстановления паролей, вы можете использвать laravel/ui пакет Composer:

composer require laravel/ui --dev

php artisan ui vue --auth

Эти представления будут размещены в resources/views/auth/passwords. Вы можете свободно настроить их для вашего приложения.


После восстановления пароля

После определения маршрутов и представлений для восстановления паролей пользователей, вы можете посетить маршрут в браузере /password/reset. ForgotPasswordController входящий в состав базового фреймворка уже включает логику для отправки ссылок на почтовый адрес, в то время как ResetPasswordController включает логику восстановления паролей пользователя.

После восстановления пароля, пользователь автоматически будет залогинен в приложении и перенаправлен на адрес /home. Вы можете настроить локацию перенаправления путём определиня свойства redirectTo для ResetPasswordController:

protected $redirectTo = '/dashboard';
По умолчанию токены восстановления паролей исчезают через час. Вы можете изменить это через опцию expire в вашем config/auth.php файле.

Настройка

Настройка стражей аутентификации

В вашем файле конфигурации auth.php, вы можете настроить несколько "стражей", которые могут быть использованы для определения поведения аутентификации для нескольких таблиц пользователей. Вы можете настроить включённый ResetPasswordController, чтобы использовать использовать стража по вашему выбору путём переопределения метода guard для контроллера. Этот метод должен вернуть экземпляр стража:

use Illuminate\Support\Facades\Auth;

/**
 * Get the guard to be used during password reset.
 *
 * @return \Illuminate\Contracts\Auth\StatefulGuard
 */
protected function guard()
{
    return Auth::guard('guard-name');
}

Настройка Брокера Паролей

В вашем файле конфигурации auth.php, вы можете настроить несколько брокеров пароля, которые испоьзуются чтобы восстановить пароли для нескольких таблиц пользователя. Вы можете настроить включённые ForgotPasswordController и ResetPasswordController, чтобы использовать брокер на ваш выбор, путём переписывания метода broker:

use Illuminate\Support\Facades\Password;

/**
 * Get the broker to be used during password reset.
 *
 * @return PasswordBroker
 */
public function broker()
{
    return Password::broker('name');
}

Настройка восстановления Email

Вы можете легко модифицировать класс уведомлений, который используется для отправки ссылки на восстановление пользователю. Для начала, перепишите метод sendPasswordResetNotification для вашей модели User. Внутри этого метода, вы можете выслать уведомление используя любой класс уведомлений на ваш выбор. Токен восстановления пароля $token — это первый аргумент получаемый методом:

/**
 * Send the password reset notification.
 *
 * @param  string  $token
 * @return void
 */
public function sendPasswordResetNotification($token)
{
    $this->notify(new ResetPasswordNotification($token));
}