Laravel Jetstream
Laravel Jetstream vyšel v září minulého roku společně s Laravel 8. Jetstream je nová open-source aplikace, která nabízí perfektní výchozí bod pro vaší novou webovou aplikaci. Jetstream nabízí implementaci pro přihlášení, registraci, emailové ověření, dvou-faktorovou autentizaci, session management nebo API podporu přes Laravel Sanctum. Celý Jetstream je navíc v Tailwind CSS a při instalaci rovnou nabízí možnost implementace Livewire nebo Inertia.
Instalace
Laravel Jetstream můžeme nainstalovat více způsoby, prakticky stejně jako bychom instalovali čerstvou Laravel aplikaci. Můžeme ho tedy nainstalovat pomocí composeru nebo pomocí Laravel instalátoru.
Přes Laravel instalátor
Při vytváření nové Laravel aplikace stačí přidat flag --jet
:
laravel new nazev-projektu --jet
A poté klasicky spustit migrace:
php artisan migrate
Přes Composer
Pokud preferujete composer nebo již máte vytvořenou Laravel aplikaci (ve verzi 8), pak Jetstream nainstalujete příkazem:
composer require laravel/jetstream
Poté potřebujete spustit příkaz artisan jetstream:install
a specifikovat stack, který chcete používat:
Pro Livewire s Blade:
php artisan jetstream:install livewire
php artisan jetstream:install inertia
Také můžete přidat flag --team
, který umožní týmový management v Laravel Jetstream.
Po nainstalování je potřeba spustit npm, který vygeneruje všechny assety, které Jetstream potřebuje:
npm install && npm run dev
A nakonec klasicky spustíme migrace:
php artisan migrate
Autentizace
Jak jsem již psal v úvodu, Jetstream nabízí předem již tyto funkce:
- Přihlašovací formulář
- Dvou-faktorové přihlášení
- Registrační formulář
- Resetování hesla
- Emailové ověření
Tyto pohledy najdete v adresáři resources/views/auth
. Backendovou logiku zajišťuje Laravel Fortify. Fortify akce najdete v adresáři app/Actions/Fortify/
a jeho hlavní konfigurační soubor se nachází v config/fortify.php
. V tomto konfiguračním souboru můžete povolovat/zakazovat různé možnosti:
'features' => [
Features::registration(),
Features::resetPasswords(),
// Features::emailVerification(),
Features::updateProfileInformation(),
Features::updatePasswords(),
Features::twoFactorAuthentication(),
],
Management profilu
Jetstream mimo jiné defaultně nabízí management profilu uživatelů, kdy můžete změnit jejich jméno, email a profilovou fotku. Pohled s profilem se nachází v resources/views/profile/update-profile-information-form.blade.php
, případně pokud využíváte Inertiu tak v resources/js/Pages/Profile/UpdateProfileInformationForm.vue
.
Třídu obsluhující logiku najdete v app/Actions/Fortify/UpdateUserProfileInformation.php
.
Jetstream security
Jetstream umožňuje standardně uživatelům měnit jejich heslo a odhlásit je:
Nicméně kromě toho Jetstream také nabízí dvou-faktorové přihlašování přes QR kód, který si uživatele mohou sami libovolně zapnout nebo vypnout:
Kromě toho je také možné, aby byl uživatel odhlášen ve všech ostatních prohlížečích:
Jetstream API
Jetstream využívá Laravel Sanctum pro jednoduché API pomocí tokenů. Díky Sanctumu je každému uživateli vygenerovaný API token se specifickými právy, jako jsou vytoření/editaci/čtení/mazání. Přicházející request pak můžeme jednoduše zkontrolovat pomocí metody tokenCan()
:
$request->user()->tokenCan('read');
API podporu můžete opět bez problémů vypnout v konfiguračním souboru config/jetstream.php
.
Jetstream týmy
Pokud během Jetstream instalace použijete flag --team
, pak vaše aplikace bude umožňovat vytváření týmů a jejich management. Díky tomu si pak každý uživatel může vytvořit vlastní tým, do kterého bude patřit. Více o Jetstream team najdete na oficiálních stránkách.
Video přehled
Na závěr opět přikládám výborné video vysvětlující Laravel Jetstream od Povilase Koropa: