Laravel 9.4 est désormais release depuis le 9 mars, toutes les modifications sont disponibles ici mais voyons-les plus importantes de cette nouvelle version mineure.
VerifyCsrfToken configurable
Principale amélioration de cette 9.4, le token CSRF est désormais entièrement configurable grace à cette PR de Jaggy !
Pour en profiter, rien de plus simple, il vous suffit d'ajouter cette nouvelle méthode au middleware app\Http\Middleware\VerifyCsrfToken
:
1use Symfony\Component\HttpFoundation\Cookie; 2 3class VerifyCsrfToken extends Middleware { 4 protected function newCookie($request, $config) 5 { 6 return new Cookie( 7 "XSRF-TOKEN-{$request->user()->type}", 8 $request->session()->token(), 9 $this->availableAt(60 * $config['lifetime']),10 $config['path'],11 $config['domain'],12 $config['secure'],13 false,14 false,15 $config['same_site'] ?? null,16 );17 }18}
Vous pourrez ainsi avoir un contrôle total sur les particularités du cookie CSRF, en modifiant par exemple sa durée de vie, sa visibilité ...
Cela peut s'avérer utile dans les applications complexes gérants plusieurs domaines et vous prévenir de l'erreur "419 Page Expired".
Nouvelle méthode soleValue
Laravel 8.23 ajoutait une nouvelle méthode sole
permettant de s'assurer qu'un seul item était trouvable par une requête du Query Builder.
1DB::table('products')->where('ref', '#123')->sole();
Une MultipleRecordsFoundException
ou une NoRecordsFoundException
sera lancée si respectivement plusieurs ou aucun item correspond à la requête.
Matthew Hailwood enrichit cette fonctionnalité d'une nouvelle méthode soleValue
permettant de récupérer directement une valeur du résultat d'un sole
.
1DB::table('products')->where('ref', '#123')->soleValue('id');
L'affichage des Mutex
Dorénavant la commande artisan schedule:list
affichera clairement les commandes actuellement "mutex" depuis cette PR de Madman-81.
1$ php artisan schedule:list2+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+3| Command | Interval | Description | Next Due | Has Mutex |4+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+5| '/usr/bin/php8.0' 'artisan' mycommands:something | */2 * * * * | Process something | 2022-03-03 10:22:00 +00:00 | Yes |6| '/usr/bin/php8.0' 'artisan' mycommands:otherthing | */2 * * * * | Process otherthing | 2022-03-03 10:22:00 +00:00 | |7+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+
Le mutex est un mode d'exécution de vos commandes qui vous assure qu'une même commande ne peut être exécutée deux fois simultanément.
Cela s'avère utile quand l'exécution d'une commande prend du temps à se finaliser afin d'éviter de surcharger votre serveur.
Ce comportement n'est pas celui par défaut de Laravel, il est nécessaire de configurer votre commande avec la méthode withoutOverlapping
dans votre kernel.
1$schedule->command('mail:send')->withoutOverlapping();
A lire
Autres articles de la même catégorie
Laravel Pint
Pint est un "réparateur de style dogmatique", voyons ensemble de quoi il en découle !
Mathieu De Gracia
Top 10 des posts en 2022
L'année se termine !
Mathieu De Gracia
Sondage annuel de Laravel France
Laravel France a besoin de vous !
Mathieu De Gracia