Composants du Profil Utilisateur
Le composant profile permet aux utilisateurs de gérer leurs informations personnelles, paramètres de sécurité et préférences.
Architecture du Composant
Fonctionnalités
Informations personnelles
-
Email : Affichage en lecture seule
-
Pseudo : Nom d’utilisateur modifiable
-
Prénom/Nom : Informations optionnelles
-
Langue : Sélection de la langue préférée
Configuration des Traductions
Le composant utilise le système de traduction ngx-translate avec les clés suivantes :
Structure des clés principales
{
"PROFILE": {
"TITLE": "Profil Utilisateur",
"SUBTITLE": "Gérez vos informations personnelles et préférences",
"PERSONAL_INFO": {
"TITLE": "Informations Personnelles",
"EMAIL": "Adresse E-mail",
// ... autres clés
},
"SECURITY": {
"TITLE": "Paramètres de Sécurité",
"CURRENT_PASSWORD": "Mot de passe actuel",
// ... autres clés
},
"LANGUAGES": {
"FRENCH": "Français",
"ENGLISH": "Anglais"
// ... autres langues
}
}
}
Dépannage
Problème : Affichage "undefined" dans la page profil
Symptômes :
- La page profile affiche "undefined" au lieu du texte traduit
- L’application peut planter lors de l’accès à /profile
Cause :
Clés de traduction manquantes dans les fichiers i18n/*.json
Solution :
-
Vérifier les fichiers de traduction :
-
frontend/src/assets/i18n/fr.json
-
frontend/src/assets/i18n/en.json
-
-
S’assurer que toutes les clés PROFILE sont présentes :
-
PROFILE.TITLE
,PROFILE.SUBTITLE
-
PROFILE.PERSONAL_INFO.*
-
PROFILE.SECURITY.*
-
PROFILE.LANGUAGES.*
-
PROFILE.STATUS.*
-
PROFILE.MESSAGES.*
-
PROFILE.ERRORS.*
-
-
Structure complète requise :
{ "PROFILE": { "TITLE": "...", "SUBTITLE": "...", "BACK_TO_DASHBOARD": "...", "CHANGE_PHOTO": "...", "STATUS": { "VERIFIED": "...", "ACTIVE": "..." }, "PERSONAL_INFO": { "TITLE": "...", "EMAIL": "...", "PSEUDO": "...", // ... toutes les clés utilisées }, "SECURITY": { "TITLE": "...", "CURRENT_PASSWORD": "...", // ... toutes les clés utilisées } } }
Problème : Erreur de chargement des données utilisateur
Symptômes : - Message d’erreur "Erreur lors du chargement du profil" - Champs de formulaire vides
Solutions possibles :
-
Vérifier l’authentification :
-
Token JWT valide dans le localStorage
-
Connexion à l’API Gateway
-
-
Tester l’endpoint API :
curl -H "Authorization: Bearer YOUR_TOKEN" \ http://localhost:8000/users/me
-
Vérifier les logs de développement :
-
Console navigateur (F12)
-
Logs du service d’authentification
-
Tests
Sécurité
Maintenance
Débogage et Résolutions de Problèmes
Erreur 500 lors de la mise à jour du profil
Problème : L’endpoint PATCH /users/me
retournait une erreur HTTP 500 malgré une mise à jour réussie en base de données.
Cause : La méthode SQLAlchemy.refresh()
ne rechargeait pas correctement les relations (oauth_accounts
) après la mise à jour, causant une erreur lors de la sérialisation FastAPI.
Solution appliquée :
# Avant (problématique)
await session.commit()
await session.refresh(user_in_session)
return UserRead.model_validate(user_in_session)
# Après (corrigé)
await session.commit()
# Nouveau SELECT pour garantir le chargement des relations
stmt_updated = select(UserModel).where(UserModel.id == current_user.id)
result_updated = await session.execute(stmt_updated)
updated_user = result_updated.unique().scalar_one()
return UserRead.model_validate(updated_user)
Tests : Vérifier que la mise à jour du profil ne génère plus d’erreur 500 et que l’interface se met à jour immédiatement.