Меняем Laravel UI на Laravel Fortify

Changing laravel iu to laravel fortify

В этому уроке я расскажу вам, как заменить функциональность устаревшего пакета 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.