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

Nebo Inertia s Vue:

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: enter image description here

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: enter image description here

Kromě toho je také možné, aby byl uživatel odhlášen ve všech ostatních prohlížečích: enter image description here

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: