Сброс пароля
Содержание:
Введение
Для быстрого старта вы можете установить 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));
}