Skip to content

Mon profil

Section « Mon profil » (components/profile/ProfileView.vue), partagée par les quatre portails : chaque tableau de bord (voyageur, région, revendeur, super-admin) la monte dans sa section profile. Seul le tableau de bord voyageur lui passe la prop stats (compteurs de démonstration de la carte d'identité) ; sans elle, la rangée de compteurs est masquée.

Chargement et sauvegarde

  • fetchProfile() (src/api/profile.ts, SDK typé authCurrentUser) alimente le formulaire. Un échec de chargement bloque le formulaire entier : PUT /user étant un full-replace, sauvegarder des valeurs vides écraserait le profil stocké.
  • updateProfile() (authUpdateCurrentUser) envoie tous les champs (règles present côté backend), les optionnels à null quand vides, le pays en majuscules, la langue via toPreferredLanguage. Elle retourne le profil frais mappé depuis la réponse du PUT.
  • Prénom et nom sont requis (@regle) ; l'email est affiché mais jamais renvoyé (hors périmètre de l'endpoint).
  • Après sauvegarde : la langue choisie est appliquée à l'app et persistée (comme LocaleSwitcher), puis le store de session est rafraîchi (auth.refreshUser(), un échec du rafraîchissement ne fait pas échouer la sauvegarde).
  • Un instantané JSON (pristine) trace l'état sale ; useUnsavedGuard avertit avant de quitter un formulaire modifié.

Photo de profil

Voir aussi la couche images (pickImageVariant, garde-fous de validation).

  • L'avatar (80 px CSS) rend la variante thumb (200 px, nette en 2×) de la carte de variantes signées servie par le backend (profile_picture).
  • Le fichier choisi (types et taille validés localement, miroir des règles backend) n'est qu'un aperçu local (URL.createObjectURL) jusqu'à « Enregistrer » : uploadImage() d'abord, puis PUT /user avec le profile_picture_id obtenu. L'id est renvoyé tel quel quand la photo n'est pas touchée (full-replace) ; la suppression envoie null.
  • L'aperçu local reste affiché jusqu'à la réponse du PUT, qui fournit la carte de variantes fraîche. Envoi en échec → sauvegarde annulée, fichier conservé pour un nouvel essai ; PUT en échec après envoi réussi → aperçu conservé, le nouvel essai renvoie l'id sans re-téléverser.

i18n

Chaînes sous profile.*, présentes dans les trois catalogues (fr / de / en).

Contributors

No contributors

Changelog

No recent changes