Les Nouveautés Laravel 8.70

Les dernières nouveautés inclues depuis la version 8.7 de Laravel

On se retrouve dans cet article pour faire un petit tour des dernières fonctionnalités implémentées dans les dernières versions de Laravel jusqu’à la 8.70. Ainsi, je vous propose de voir un peu plus en détails 2 de ces nouveautés.

🔒 Une fonction anonyme peut désormais être passée en troisième argument du tableau initial de la fonction attempt(). Pour rappel cette fonction permet de très facilement authentifier un utilisateur. Désormais, nous pouvons passer une expression pour déterminer si l’utilisateur répond à une certaine logique. Auquel cas, il pourra ou pas se connecter.
Les exemples sont nombreux : est-il banni ? A-t-il validé son e-mail ?… Dans l’exemple ci-dessous, nous permettons la connexion si et seulement si la personne n’a pas le champ email_verified_at à null

    if (! Auth::attempt(
        [
            'email' => $this->email,
            'password' => $this->password,
            function ($builder) {
                return $builder->whereNotNull('email_verified_at');
            }
        ]
        , $this->boolean('remember'))) {

        ...
    }

📐 Il est aussi possible de générer des règles de validation à la volée grâce à la création d’un nouveau Modèle.
Ceci est possible grâce à un nouveau drapeau -R à coupler avec celui de la génération d’un Contrôleur -r
Pour exemple, prenons le modèle Product.

php artisan make:model Product -Rr

Cette ligne de commande va créer le Modèle Product dans App\Models, mais également son Contrôleur dans App\Http\Controllers. Mais surtout, l’application a généré deux classes de validation StoreProductRequest et UpdateProductRequest dans App\Http\Requests. Ces classes sont à utilisées dans votre Contrôleur et permettront de déplacer toute la logique des règles de validation hors des Contrôleurs.