{{TOC}} {{DOCVER 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51}} ==Введение== Хотите быстро приступить к работе? Просто запустите %%(sh)php artisan make:auth%% в новом приложении Laravel и перейдите в свой браузер по адресу %%(t)http://your-app.dev/register%% или по любому другому URL, который назначен вашему приложению. Эта единственная команда позаботится о строительстве всей вашей системы аутентификации, включая сброс паролей! Большинство веб-приложений предоставляют пользователям возможность сбросить забытые пароли. Вместо того, чтобы заставлять вас повторять это в каждом приложении, Laravel предлагает удобные методы для отправки напоминаний о пароле и сброса пароля. Прежде чем использовать функции сброса пароля Laravel, ваш пользователь должен использовать типаж %%Illuminate\Notifications\Notifiable%%. ==О базе данных== Для начала убедитесь, что ваша модель %%App\User%% реализует контракт %%Illuminate\Contracts\Auth\CanResetPassword%%. Конечно, модель %%App\User%%, включенная в инфраструктуру, уже реализует этот интерфейс и использует типаж %%Illuminate\Auth\Passwords\CanResetPassword%%, чтобы включить методы, необходимые для реализации интерфейса. ===Создание таблицы переназначения маркеров=== Затем необходимо создать таблицу для хранения токенов сброса пароля. Перенос для этой таблицы входит в комплект поставки Laravel и находится в каталоге %%(t)database/migrations%%. Итак, все, что вам нужно сделать, это запустить миграцию базы данных: %%(sh) php artisan migrate %% ==Маршрутизация== Laravel включает классы %%Auth\ForgotPasswordController%% и %%Auth\ResetPasswordController%%, которые содержат логику, необходимую для отправки по электронной почте паролей сброса пароля и сброса пользовательских паролей. Все маршруты, необходимые для выполнения сброса пароля, могут быть сгенерированы командой Artisan %%(t)make:auth%%: %%(sh) php artisan make:auth %% ==Представления== Опять же, Laravel сгенерирует все необходимые представления для сброса пароля, когда выполняется команда %%(t)make:auth%%. Эти представления размещаются в %%(t)resources/views/auth/passwords%%. Вы можете настроить их по мере необходимости для своего приложения. ==После сброса паролей== После того как вы определили маршруты и представления для сброса паролей пользователя, вы можете просто получить доступ к маршруту в вашем браузере с помощью %%(t)/password/reset%%. Контроллер %%ForgotPasswordController%%, входящий в состав фреймворка, уже включает в себя логику отправки электронной почты для сброса пароля, в то время как %%ResetPasswordController%% включает в себя логику сброса пользовательских паролей. После сброса пароля пользователь автоматически будет зарегистрирован в приложении и перенаправлен на %%(t)/home%%. Вы можете настроить местоположение переадресации сброса после сброса пароля, указав свойство %%redirectTo%% в %%ResetPasswordController%%: %% protected $redirectTo = '/dashboard'; %% По умолчанию токены сброса пароля истекают через один час. Вы можете изменить это с помощью опции сброса пароля %%expire%% в файле %%(t)config/auth.php%%. ==Настройка== ===Настройка защиты аутентификации=== В файле конфигурации %%auth.php%% вы можете настроить несколько «охранников»(guards), которые могут использоваться для определения поведения аутентификации для нескольких пользовательских таблиц. Вы можете настроить включенный %%ResetPasswordController%% для использования охранника по вашему выбору, переопределив метод %%guard%% на контроллере. Этот метод должен возвращать его экземпляр: %%(php) use Illuminate\Support\Facades\Auth; protected function guard() { return Auth::guard('guard-name'); } %% ===Настройка брокера паролей=== В файле конфигурации %%auth.php%% вы можете настроить несколько «брокеров» (brokers) пароля, которые могут быть использованы для сброса паролей в нескольких пользовательских таблицах. Вы можете настроить включенные функции %%ForgotPasswordController%% и %%ResetPasswordController%%, чтобы использовать брокера по вашему выбору, переопределив метод %%broker%%: %%(php) use Illuminate\Support\Facades\Password; /** * Получите брокер, который будет использоваться при сбросе пароля. * * @return PasswordBroker */ protected function broker() { return Password::broker('name'); } %% ===Сброс настроек электронной почты=== Вы можете легко изменить класс уведомления, используемый для отправки ссылки сброса пароля пользователю. Для начала переопределите метод %%sendPasswordResetNotification%% в вашей модели %%User%%. В рамках этого метода вы можете отправить уведомление с использованием любого выбранного вами класса уведомлений. %%$token%% - это первый аргумент, полученный методом: %%(php) /** * Отправка уведомления об изменении пароля. * * @param string $token * @return void */ public function sendPasswordResetNotification($token) { $this->notify(new ResetPasswordNotification($token)); } %%