Laravel 8

Cours Laravel 8 – la sécurité – gestion du profil et API

Lorsqu’on installe Jetstream on n’obtient pas seulement une authentification complète avec enregistrement, connexion et déconnexion, vérification de l’email, oubli du mot de passe, comme on l’a vu dans les deux articles précédents. On obtient beaucoup plus comme on va le voir dans cet article. Déjà une gestion du profil de l’utilisateur qui peut ainsi modifier ses données personnelles, mais également la possibilité de passer par une authentification à deux facteurs qui devient de plus en plus à la mode. l’utilisateur peut en plus supprimer sa session ou carrément son compte. On verra également la possibilité de demander la confirmation du mot de passe pour l’accès à des pages sensibles. Pour terminer j’évoquerai aussi les API.

Le dashboard

On a vu que lorsqu’un utilisateur est connecté il arrive dans le dashbord (pour mémoire on verra plus tard dans ce cours l’aspect localisation pour changer toutes ces appellation dans notre langue préférée). Par défaut sur la page on trouve des renseignements et des liens de Laravel et dans la partie supérieure cet aspect :

On a un menu déroulant à droite en cliquant sur l’image (par défaut on a les deux premiers caractères du nom mais on va pouvoir mettre une vraie image) :

Là on peut procéder à 3 actions :

  • accéder au profil
  • accéder aux tokens des API
  • se déconnecter

Le profil

Quand on accède au profil c’est assez fourni.

Les informations personnelles

Là on peut modifier la photo, le nom et l’email.

La photo

Pour la gestion de la photo Jetstream ajoute à son installation le trait Laravel\Jetstream\HasProfilePhoto dans le modèle User :

use Laravel\Jetstream\HasProfilePhoto;

...

class User extends Authenticatable
{
    ...
    use HasProfilePhoto;

Si on regarde ce trait on y trouve une intendance complète pour gérer la photo. Comme il s’agit d’un trait on peut surcharger les méthodes dans le modèle pour modifier ou ajouter des fonctionnalités.

Quand on charge une photo elle est placée provisoirement ici :

A la sauvegarde elle est placée là :

J’ai déjà parlé dans cet article de la gestion des fichiers de Laravel. Jetstream utilise le disque public pour la gestion des photos (sauf si on utilise Vapor, dans ce cas on va sur S3). Si on crée un lien symbolique tel que c’est préconisé dans la documentation on va dans le dossier storage.

Si on ne veut pas gérer de photo dans le profil il suffit de désactiver l’option dans config/jetstream.php :

'features' => [
    //Features::profilePhotos(),
    ...
],

Le mot de passe

On peut aussi modifier le mot de passe à partir du profil :

L’authentification à deux facteurs

Une autre possibilité intéressante est d’activer l’authentification à deux facteurs (A2F). Pour mémoire avec ce type d’authentification on ne se contente plus du login et du mot de passe mais il faut également une information de sécurité transmise par un autre moyen (application, email, sms…). Ce type de sécurité devient de plus en plus répandue et on parle même maintenant de triple facteur ! Voyons comment Jetstream met cela en place…

Dans le profil on peut activer cette sécurité :

Toujours par sécurité le mot de passe est réclamé :

On obtient cet affichage :

On obtient un QR code pour Google Authenticator (ou autre). On a aussi des codes de récupération à enregistrer en cas de perte de la double authentification.

Abandon de session

Dans le profil on a aussi la possibilité de purger la session :

Suppression de compte

Enfin on peut dans le profil supprimer son compte :

Les API

Jetstream est équipé pour l’utilisation de Laravel Sanctum, qui est un package pour Laravel qui permet de mettre en place simplement des API à partir de l’utilisation de tokens. Un utilisateur peut générer des tokens qui permettent un accès à une API avec des permissions bien définies. Sanctum est installé en même temps que Jetstream et est donc directement disponible.

Jetstream propose une interface simple pour la génération des tokens et de leurs permissions :

Quand on crée un token une fenêtre s’ouvre et il faut copier le token qui n’apparaitra que là :

On a la liste des tokens disponibles :

On peut supprimer un token ou changer ses permissions :

Il y a un trait installé par Jetstream dans le modèle User pour le fonctionnement de ces tokens :

use Laravel\Sanctum\HasApiTokens;

...

class User extends Authenticatable
{
    use HasApiTokens;

Dans le code on peut vérifier ce token :

$request->user()->tokenCan('update');

Si on ne veut pas utiliser ces tokens alors il suffit de désactiver l’option dans config/jetstream.php :

'features' => [
    ..
    //Features::api(),
],

Conclusion

On a vu dans cet article que Jetstream permet une gestion du profil de l’utilisateur :

  • informations personnelles
  • photo
  • mot de passe
  • authentification à deux facteurs
  • abandon de session
  • suppression de compte

D’autre part par l’intermédiaire de Sanctum on peut gérer des tokens d’API et leurs permissions.

Print Friendly, PDF & Email

Leave a Reply