Fabrice Planchette

Création d'un URL Shortener - Authentification

Sep 20, 2020

On fait du classique, les utilisateurs doivent s’enregistrer/s’authentifier pour avoir accès à notre raccourcisseur d’url.

Une fois l’installation de Laravel réalisée, il nous faut gérer l’authentification (inscription, connexion, …).

L’authentification

Laravel a quelque peu évolué dans sa gestion de l’authentification.

Au départ inclus dans l’application, Laravel a déporté toute la logique dans un package nommé laravel/ui. Via des commandes artisan, il était possible de générer non seulement les controlleurs, les routes, etc… mais aussi de sortir le front en couplant bootstrap à un framework js de son choix (vuejs / react).

Mais ça c’était avant Laravel 8.

Jeatstream

laravel-ui passe en déprécier au profit d’un nouveau package : laravel/jeatstream.

Au menu quelques nouvelles fonctionnalités (la double authentification par exemple), mais surtout 2 stack possibles pour générer le front :

  • Blade + Livewire
  • Inertia + VueJS

On va ici partir sur le 1er choix (je connais VueJS et c’est donc l’occasion de découvrir LiveWire).

Il nous faut donc une nouvelle dépendance :

composer require laravel/jetstream

Ensuite, on initialise notre stack avec Livewire :

php artisan jetstream:install livewire

Si on s’intéresse à cette commande, on s’aperçoit que cela installe deux nouvelles dépendances :

  • Livewire
  • Sanctum

Ce dernier contient tout le code métier de l’authentification.

La commande a également modifié le fichier des dépendances javascript (package.json), celui de la compilation (webpack.mix.js) et ajouter un fichier tailwind.config.js. Vous l’avez compris, il nous faut maintenant les installer et lancer la compilation.

npm install && npm run dev

Dernière étape, il nous faut “migrer”, c’est à dire construire notre base de données. Pour gagner du temps, on va utiliser une base sqlite ce qui implique deux choses :

  • la création d’un fichier database.sqlite :
touch database/database.sqlite
  • et la modification du fichier .env :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
devient
DB_CONNECTION=sqlite

Et on lance la migration :

php artisan migrate

A ce moment là, tu peux rafraîchir ta home dans ton navigateur et un menu Login / register a été rajouté. La page login ressemble à ça :

Page login avec JetStream

Ok, on va créer notre premier user pour voir la suite. On va modifier le fichier database/seeders/DatabaseSeeder.php :

<?php

namespace Database\Seeders;

use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        User::create([
            'name' => 'Fabrice',
            'email' => 'fabrice@laravel.local',
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ]);

        // User::factory(10)->create();
    }
}

On execute :

php artisan db:seed

Et on retourne se connecter.

Page dashboard avec JetStream

Liens