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èglespresentcôté backend), les optionnels ànullquand vides, le pays en majuscules, la langue viatoPreferredLanguage. Elle retourne le profil frais mappé depuis la réponse duPUT.- 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 ;useUnsavedGuardavertit 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, puisPUT /useravec leprofile_picture_idobtenu. L'id est renvoyé tel quel quand la photo n'est pas touchée (full-replace) ; la suppression envoienull. - 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 ;PUTen é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

