9

Сброс и восстановление пароля для нескольких таблиц в Ларавел (Laravel)

Сброс и восстановление пароля для несколько таблиц в Ларавел (Laravel)

Как оказалось, что документация Laravel об этом умалчивает или даёт очень поверхностное представление. Необходимость иметь разные таблицы sql для аутентификации например одну для пользователей администрации, а другую для посетителей сайта или веб приложения (api) довольно таки часто встречается. Сброс и восстановление пароля для этих таблиц в Laravel так же соответственно должен быть предусмотрен.

В этом руководстве будут рассмотрены методы для актуальных на сегодняшний день версий Laravel 8 - 9.

Столкнувшись с задачей по восстановлению пароля для нескольких таблиц в Ларавел (Laravel) нам пришлось потратить много времени на поиски и решения этой задачи, как правило советы которые мы находили были или сильно устаревшими или абсолютно неправильными. Даже в хорошо известной Laracasts на этот вопрос нам не дали разумного объяснения.

Если аутентификация для множества таблиц в Laravel решается с помощью Guard то для сброса и восстановления пароля нужен другой подход.

Но решение этой задачи существует и оно оказалось простым. Мы хотим поделиться ним с вами, что бы вы сэкономили своё время и силы.

Необходимая начальная подготовка файлов

Мы предполагаем что вы уже создали вторую таблицу на основе предлагаемой Laravel (users) в примере будет использоваться таблица с названием (admins).

Если вы не создали модель то это необходимо сделать например на основе существующей (User), важное замечание ваша модель должна включать в себя все пространства имён и трейты (User). В примере мы будем использовать имя для модели (Admin).

И отдельную таблицу для временного хранения (Token) например на основе password_resets, в примере используется название admin_resets.

Соответственно необходимо заполнить хотя бы одно поле таблицы (Admin) для работы с ним на этом начальная подготовка завершена.

Добавление guards, providers, passwords

Перейдите в файл по пути: config/auth.php

Найдите раздел (guards) и добавьте:

Добавление guards в Laravel

Перейдите в раздел (providers) и добавьте следующие записи:

Добавление providers в Laravel

Найдите раздел (passwords) здесь будут указаны таблицы для временного хранения (Token). Так же можно указать максимальное время после которого (Token) будет удалён, по умолчанию (expire = 60 ) - один час.

Добавление password broker() в Laravel

Определение маршрутов (routs) для сброса и восстановления пароля нескольких таблиц в Ларавел (Laravel).

Для простоты будет использоваться пример взятый из документации Laravel.

Необходимо добавить вызов метода (broker('admins')) в двух местах кода он выделен. В параметр "broker" добвить то имя которое определяли в "passwords" в файле (config/auth.php)

Определение маршрутов Laravel 1
Определение маршрутов Laravel 2
Определение маршрутов Laravel 3
Определение маршрутов Laravel 4
Определение маршрутов Laravel 5

При вашем желании мы можем сделать эту и множество других работ по разработке сайтов и приложений на Ларавел (Laravel).

Автор: Юрий Лысенко