Релиз Laravel 8 принес с собой новый каркас, позволяющий быстро развернуть систему аутентификации пользователей, которая включает в себя логин, регистрацию, подтверждение по электронной почте, двухфакторную аутентификацию, управление сессиями и командами. Также Jetstream имеет встроенную интеграцию с Laravel Sanctum для аутентификации через API на основе токенов.
![image](https://habrastorage.org/getpro/habr/post_images/0d1/9de/1f3/0d19de1f346df26db6e92c4be71a7321.png)
Laravel Jetstream поставляется с двумя стеками для фронтенда — Livewire и Inertia.js. Оба стека добавляют реактивности в ваше приложение, разница между ними в том, что Livewire в качестве шаблонизатора использует Blade, а Inertia.js использует Vue. В качестве CSS-фреймворка в обоих случаях используется Tailwind.
Если мы создаем новый проект, то можем использовать Laravel Installer с флагом
В готовый проект следует добавить пакет с помощью Composer:
Далее в зависимости от выбранного стека выбираем одно из двух. Если управление командами не требуется, то флаг
Livewire:
Inertia.js:
Завершаем установку установкой NPM-пакетов и миграцией базы:
Laravel Jetstream позволяет пользователю заходить в свой профиль, обновлять информацию о себе и даже загружать фото. Отключить возможность установки фотографий можно в
![image](https://habrastorage.org/getpro/habr/post_images/d7e/ec7/d18/d7eec7d1823caa245e3ef82820a1c0dd.png)
После включении двухфакторной аутентификации пользователь должен сохранить коды восстановления, а также отсканировать полученный QR-код с помощью приложения с поддержкой One-Time Password — динамического пароля. Это может быть, например, Google Authenticator или 1Password.
![image](https://habrastorage.org/getpro/habr/post_images/178/7fd/819/1787fd81933b31db5ebfaa1fc35956d2.png)
Jetstream интегрирован с Sanctum и позволяет пользователю генерировать токены доступа с различными правами: создание, чтение, обновление и удаление. Отключить эту возможность можно в
![image](https://habrastorage.org/getpro/habr/post_images/9a4/339/30f/9a433930f950dc8ba55a8f9ae0938d5c.png)
Если вы установили Jetstream с опцией
Эту команду пользователь может переименовать или создать дополнительные. Приглашать других пользователей в свою команду можно только зная их email и они должны быть уже зарегистрированы на сайте. Владелец команды назначает роли для остальных участников. Роли могут быть Administrator или Editor. Administrator имеет полные права, когда Editor может только читать, создавать и обновлять. То есть имеет все те же права, кроме удаления.
![image](https://habrastorage.org/getpro/habr/post_images/613/e2f/04b/613e2f04b13a88dfd84fb778936da485.png)
![image](https://habrastorage.org/getpro/habr/post_images/0d1/9de/1f3/0d19de1f346df26db6e92c4be71a7321.png)
Выбираем стек
Laravel Jetstream поставляется с двумя стеками для фронтенда — Livewire и Inertia.js. Оба стека добавляют реактивности в ваше приложение, разница между ними в том, что Livewire в качестве шаблонизатора использует Blade, а Inertia.js использует Vue. В качестве CSS-фреймворка в обоих случаях используется Tailwind.
Установка
Если мы создаем новый проект, то можем использовать Laravel Installer с флагом
--jet
. Установка будет интерактивной и предложит выбрать стек и управление командами (teams). После установки требуется выполнить миграции в базу данных:laravel new project-name --jet
php artisan migrate
В готовый проект следует добавить пакет с помощью Composer:
composer require laravel/jetstream
Далее в зависимости от выбранного стека выбираем одно из двух. Если управление командами не требуется, то флаг
--teams
нужно убрать.Livewire:
php artisan jetstream:install livewire --teams
Inertia.js:
php artisan jetstream:install inertia --teams
Завершаем установку установкой NPM-пакетов и миграцией базы:
npm install && npm run dev
php artisan migrate
Профиль пользователя
Laravel Jetstream позволяет пользователю заходить в свой профиль, обновлять информацию о себе и даже загружать фото. Отключить возможность установки фотографий можно в
config/jetstream.php
![image](https://habrastorage.org/getpro/habr/post_images/d7e/ec7/d18/d7eec7d1823caa245e3ef82820a1c0dd.png)
Двухфакторная аутентификация
После включении двухфакторной аутентификации пользователь должен сохранить коды восстановления, а также отсканировать полученный QR-код с помощью приложения с поддержкой One-Time Password — динамического пароля. Это может быть, например, Google Authenticator или 1Password.
![image](https://habrastorage.org/getpro/habr/post_images/178/7fd/819/1787fd81933b31db5ebfaa1fc35956d2.png)
API
Jetstream интегрирован с Sanctum и позволяет пользователю генерировать токены доступа с различными правами: создание, чтение, обновление и удаление. Отключить эту возможность можно в
config/jetstream.php
![image](https://habrastorage.org/getpro/habr/post_images/9a4/339/30f/9a433930f950dc8ba55a8f9ae0938d5c.png)
Команды
Если вы установили Jetstream с опцией
teams
, то получите интерфейс для управления командами. Каждый пользователь может состоять в одной или нескольких командах. По-умолчанию, новый пользователь состоит в команде, которая названа в его честь. Например, для пользователя John, это будет John's Team.Эту команду пользователь может переименовать или создать дополнительные. Приглашать других пользователей в свою команду можно только зная их email и они должны быть уже зарегистрированы на сайте. Владелец команды назначает роли для остальных участников. Роли могут быть Administrator или Editor. Administrator имеет полные права, когда Editor может только читать, создавать и обновлять. То есть имеет все те же права, кроме удаления.
![image](https://habrastorage.org/getpro/habr/post_images/613/e2f/04b/613e2f04b13a88dfd84fb778936da485.png)
Fragster
Хорошо, что это не обязательно, а сам механизм аутентификации можно использовать достаточно просто, см. отдельную доку github.com/laravel/fortify