Может войдёшь?
Черновики Написать статью Профиль

Сброс пароля

перевод документация 5.х

  1. 1. Введение
  2. 2. О базе данных
    1. 2.1. Создание таблицы переназначения маркеров
  3. 3. Маршрутизация
  4. 4. Представления
  5. 5. После сброса паролей
  6. 6. Настройка
    1. 6.1. Настройка защиты аутентификации
    2. 6.2. Настройка брокера паролей
    3. 6.3. Сброс настроек электронной почты
Этот перевод актуален для англоязычной документации на (ветка 5.3). Опечатка? Выдели и нажми Ctrl+Enter.

Введение

Хотите быстро приступить к работе? Просто запустите shphp artisan make:auth в новом приложении Laravel и перейдите в свой браузер по адресу http://your-app.dev/register или по любому другому URL, который назначен вашему приложению. Эта единственная команда позаботится о строительстве всей вашей системы аутентификации, включая сброс паролей!

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

Прежде чем использовать функции сброса пароля Laravel, ваш пользователь должен использовать типаж PHPIlluminate\Notifications\Notifiable.

О базе данных

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

Создание таблицы переназначения маркеров

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

shphp artisan migrate

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

Laravel включает классы PHPAuth\ForgotPasswordController и PHPAuth\ResetPasswordController, которые содержат логику, необходимую для отправки по электронной почте паролей сброса пароля и сброса пользовательских паролей. Все маршруты, необходимые для выполнения сброса пароля, могут быть сгенерированы командой Artisan make:auth:

shphp artisan make:auth

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

Опять же, Laravel сгенерирует все необходимые представления для сброса пароля, когда выполняется команда make:auth. Эти представления размещаются в resources/views/auth/passwords. Вы можете настроить их по мере необходимости для своего приложения.

После сброса паролей

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

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

PHP
protected $redirectTo '/dashboard';

По умолчанию токены сброса пароля истекают через один час. Вы можете изменить это с помощью опции сброса пароля PHPexpire в файле config/auth.php.

Настройка

Настройка защиты аутентификации

В файле конфигурации PHPauth.php вы можете настроить несколько «охранников»(guards), которые могут использоваться для определения поведения аутентификации для нескольких пользовательских таблиц. Вы можете настроить включенный PHPResetPasswordController для использования охранника по вашему выбору, переопределив метод PHPguard на контроллере. Этот метод должен возвращать его экземпляр:

PHP
use Illuminate\Support\Facades\Auth;

protected function 
guard()
{
    return 
Auth::guard('guard-name');
}

Настройка брокера паролей

В файле конфигурации PHPauth.php вы можете настроить несколько «брокеров» (brokers) пароля, которые могут быть использованы для сброса паролей в нескольких пользовательских таблицах. Вы можете настроить включенные функции PHPForgotPasswordController и PHPResetPasswordController, чтобы использовать брокера по вашему выбору, переопределив метод PHPbroker:

PHP
use Illuminate\Support\Facades\Password;

/**
 * Получите брокер, который будет использоваться при сбросе пароля.
 *
 * @return PasswordBroker
 */
protected function broker()
{
    return 
Password::broker('name');
}

Сброс настроек электронной почты

Вы можете легко изменить класс уведомления, используемый для отправки ссылки сброса пароля пользователю. Для начала переопределите метод PHPsendPasswordResetNotification в вашей модели PHPUser. В рамках этого метода вы можете отправить уведомление с использованием любого выбранного вами класса уведомлений. PHP$token — это первый аргумент, полученный методом:

PHP
/**
 * Отправка уведомления об изменении пароля.
 *
 * @param  string  $token
 * @return void
 */
public function sendPasswordResetNotification($token)
{
    
$this->notify(new ResetPasswordNotification($token));
}

Как вы считаете, полезен ли этот материал? Да Нет

Комментарии (2)

Solov

вариант как изменить пароль пользователя, в модели User проверить наличие

use Illuminate\Support\Facades\Hash;
public function setPasswordAttribute($value)
{
    $this->attributes['password'] = Hash::make($value);
}

дальше в любом месте кода

$user = \App\User::find(<id>)->update(['password' => '123456789']);
Siriuss

Получаю ответ: Call to undefined method Illuminate\Database\Query\Builder::notify()
Где ошибка?

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.