L’aggiornamento alla versione 8 di Laravel, tra le tante novità introdotte e di cui abbiamo già discusso nel nostro blog nell’articolo Le novità di Laravel 8, ha portato con sé una nuova versione dell’applicazione di scaffolding: Laravel Jetstream è la UI completamente rinnovata che il framework fornisce ai propri utenti, più moderno e con più funzioni rispetto al passato.

Applicazione di scaffolding

Ma cosa vuol dire esattamente “applicazione di scaffolding”? Nel nostro caso, come in quello di tanti framework anche di linguaggi diversi dal PHP, stiamo parlando di una sorta di “scheletro” di base che ci consente di partire con lo sviluppo di una nuova applicazione con delle funzioni essenziali già perfettamente funzionanti.

Installazione

Laravel Jetstream può essere installato solo su nuovi progetti Laravel. L’operazione può essere fatta in due modi. Se abbiamo già installato Laravel Installer,  basterà aggiungere l’opzione –jet al comando che crea un nuovo progetto:

laravel new project-name –jet

Oppure è possibile utilizzare Composer:

composer require laravel/jetstream

Le caratteristiche di Jetstream

Quali sono esattamente queste funzioni che Laravel Jetstream fornisce? Vediamole insieme:

  • Registrazione utenti
  • Login
  • Gestione delle sessioni
  • Supporto alle API con Laravel Sanctum
  • Funzionalità “Teams”
  • Utilizzo di Tailwind CSS
  • Possibilità di scegliere lo stack per il frontend

Per quanto riguarda la registrazione e l’autenticazione degli utenti, Jetstream utilizza Laravel Fortify, un backend “agnostico” che permette di utilizzare qualsiasi tecnologia per il frontend che noi desideriamo e che semplicemente espone delle API per compiere le funzioni necessarie.

Fortify ci permette di avere subito a disposizione la registrazione degli utenti, la verifica via email dei nuovi iscritti, il login, il reset della password, l’aggiornamento delle informazioni degli utenti, l’aggiornamento della password e l’autenticazione a due fattori.

Con Fortify possiamo decidere noi quali funzioni utilizzare: difatti nel file di configurazione fortify.php possiamo semplicemente commentare ciò che riteniamo non necessario, in modo che il nostro codice non contenga parti non utilizzate:

    ‘features’ => [

Features::registration(),

Features::resetPasswords(),

Features::emailVerification(),

Features::updateProfileInformation(),

// Features::updatePasswords(),

Features::twoFactorAuthentication(),

],

 

Per quanto riguarda la gestione delle sessioni, Jetstream fornisce un’importante funzione di sicurezza che ci permette di disconnettere immediatamente tutte le altre sessioni che sono autenticate per un determinato utente.

La nostra applicazione di scaffolding utilizza un altro package di Laravel, ossia Sanctum, per fornire le API token-based. Grazie a Sanctum, ogni utente può generare dei token per eseguire determinate azioni in base ai propri permessi, ad esempio relativi alle operazioni CRUD.

Per creare un token è possibile utilizzare il metodo createToken():

$user->createToken(‘write’);

 

Invece, la verifica dei permessi si effettua tramite il metodo tokenCan():

$request->user()->tokenCan(‘write’);

 

Un’altra novità si ottiene aggiungendo l’opzione –team durante l’installazione di Jetstream. In questo modo l’applicazione fornirà anche la funzione Teams, che permette ad ogni utente registrato di appartenere a uno o più gruppi e che crea automaticamente gli strumenti per gestire questi gruppi stessi.

Per quanto riguarda il frontend, Laravel Jetstream segna l’abbandono di Bootstrap in favore di Tailwind CSS, il bellissimo framework di cui vi abbiamo già parlato nel nostro blog. Durante l’installazione dell’applicazione, vengono creati due file, webpack.mix.js e tailwind.config.js, utilizzati per creare l’output CSS dell’applicazione che viene compilata. Inoltre, nel file package.json vengono automaticamente implementati i comandi NPM necessari alla compilazione.

Inoltre, sempre in ambito frontend, l’applicazione di scaffolding ci permette di poter scegliere tra due differenti stack. Il primo è composto da Laravel Livewire e da Blade, che ci consente di creare interfacce dinamiche senza utilizzare nessun framework Javascript, creando dei component reattivi e riutilizzabili nel nostro codice utilizzando, per l’appunto, Blade, che molto probabilmente tutti voi già conoscerete.

Il secondo stack è invece formato da Inertia.js e Vue. Inertia è una libreria javascript che consente di eseguire il rendering di componenti Vue direttamente dal backend Laravel tramite il nome del component, utilizzando i prop del component per passare i dati.

In conclusione, vogliamo ovviamente specificare che Laravel Jetstream non è uno strumento adatto a tutte le esigenze ma può rappresentare una grande comodità per iniziare un nuovo progetto, in quanto ci permette di velocizzare l’implementazione di alcune funzioni comuni alla maggior parte delle applicazioni, ma al contempo ci consente di configurare tutte le sue componenti, installandole o comunque per avere il codice più pulito possibile. Noi sicuramente vi invitiamo a provarlo visitando il sito ufficiale di Jetstream!