Laravel 10

Cours Laravel 10 – 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 par ailleurs 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 appellations 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 à 2 actions :

  • accéder au profil
  • se déconnecter

Le profil

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

Les informations personnelles

Là, on peut modifier le nom et l’email. Pour pouvoir également intervenir au niveau de la photo, il faut activer l’option dans le fichier config.jetstream.php :

'features' => [
    // Features::termsAndPrivacyPolicy(),
    Features::profilePhotos(),
    // Features::api(),
    // Features::teams(['invitations' => true]),
    Features::accountDeletion(),
],

Maintenant, on y a accès :

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 :

À 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.

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) pour finir l’opération.

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.

Vous pouvez activer l’option dans le fichier config.jetstream.php :

'features' => [
    // Features::termsAndPrivacyPolicy(),
    Features::profilePhotos(),
    Features::api(),
    // Features::teams(['invitations' => true]),
    Features::accountDeletion(),
],

La commande apparaît alors dans le menu :

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');

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

Laisser un commentaire