В этому уроке я расскажу вам, как заменить функциональность устаревшего пакета laravel/ui новым пакетом Laravel Fortify.
Проблема с Jetstream (думаю, многие считают также) в том, что зачастую нужен просто каркас аутентификации без Inertia.js и Livewire. Не поймите неправильно, мне нравится работать с Inertia или Livewire, но иногда просто нужна аутентификация. Да, laravel/ui всё ещё можно использовать в Laravel 8, но я хочу восстановить эту функциональность без этого пакета. Я опишу все свои шаги и добьюсь аналогичного функционала с помощью Laravel Fortify.
Настройка проекта
laravel new laravel-fortify-demo
composer require laravel/fortify
php artisan vendor:publish --provider="Laravel\\Fortify\\FortifyServiceProvider"
настройка базы данных
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
добавьте:
Fortify::loginView(function () { return view('auth.login'); }); Fortify::registerView(function () { return view('auth.register'); }); Fortify::requestPasswordResetLinkView(function () { return view('auth.forgot-password'); }); Fortify::resetPasswordView(function () { return view('auth.reset-password'); });
Создание шаблонов
Нам нужно 4 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
:
Route::get('/', function () { return view('welcome'); })->middleware(['auth']);
Заключение
Мы воссоздали функционал базовой регистрации, логина и сбороса пароля. Fortify имеет интересную функцию проверки электронной почты, если вам интересно, вы посмотрите документацию пакета.
GitHub репозиторий
https://github.com/skydiver/laravel-fortify-demo
Автор: Martin M.
Перевод: Алексей Широков
Наш Телеграм-канал — следите за новостями о Laravel.