Замена Laravel UI на Laravel Fortify
В этой статье вы узнаете, каким образом можно заменить функциональность устаревшего пакета laravel/ui на новый пакет Laravel Fortify.
Проблема с Jetstream заключается в том, что зачастую нам нужен просто каркас аутентификации без Livewire и Inertia.js. С одной стороны, работать с Inertia либо Livewire, в целом, неплохо, с другой — иногда нужна просто аутентификация. Конечно, laravel/ui мы всё ещё можем использовать в Laravel 8, однако хочется восстановить эту функциональность без данного пакета. В этой статье будут описаны шаги по достижению аналогичного функционала посредством Laravel Fortify.
Настраиваем проект:
1) laravel new laravel-fortify-demo 2) composer require laravel/fortify 3) php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider" 4) настройка БД 5) php artisan migrate
Настраиваем Fortify
Открываем config/app.php и регистрируем сервис-провайдера Fortify:
App\Providers\FortifyServiceProvider::class,
Потом открываем config/fortify.php и обновляем свой массив features:
'features' => [ Features::registration(), Features::resetPasswords(), ],
Далее надо рассказать Fortify, где конкретно располагаются наши шаблоны аутентификации.
Открываем app/Providers/FortifyServiceProvider.php и в метод boot добавляем:
Создаём шаблоны
Нам потребуются четыре blade-файла: • resources/views/auth/forgot-password.blade.php; • resources/views/auth/login.blade.php; • resources/views/auth/register.blade.php; • resources/views/auth/reset-password.blade.php.
Их можно «позаимствовать» из пакета laravel/ui, также вы можете взять их тут.
Защищаем страницы
Теперь следует защитить наши маршруты. Открываем routes/web.php и используем мидлвар auth:
Итог
Итак, нам удалось воссоздать функционал базовой регистрации, логина и сброса пароля. При этом стоит отметить, что Fortify имеет интересную функцию проверки e-mail (если это вас интересует, изучите документацию пакета. Также вам может быть полезна ссылка на GitHub.
По материалам статьи «Using Laravel Fortify to restore laravel/ui functionality».