Feature #124
closedRécupérer automatiquement la photo de profil LinkedIn à la connexion
100%
## Spec — Récupération auto de la photo de profil LinkedIn à la connexion
### Décision de découpage
**Pas de découpage (unité de dev unique, fullstack).** C'est une correction de bug à surface unique sur GetYourJob (Next.js) : on reproduit pour le provider LinkedIn la logique d'avatar déjà en place pour Google, plus un fallback d'initiales. Le callback OAuth `profile` (`src/lib/auth.ts`) et le composant d'affichage d'avatar partagent une même chaîne de priorité (upload manuel > provider > initiales) ; les scinder créerait des sous-tâches triviales et redondantes.
### Problème
À la connexion LinkedIn, la photo de profil du candidat n'est pas récupérée automatiquement (contrairement à Google) → profil incomplet / icône vide tant que l'utilisateur n'uploade pas manuellement une photo.
### Approche
1. **Auth / mapping provider (NextAuth — `src/lib/auth.ts`)** : dans le provider LinkedIn (OIDC "Sign In with LinkedIn using OpenID Connect"), mapper la claim `picture` du profil vers `image`, comme le fait déjà le provider Google. Vérifier que le scope `profile` (OpenID Connect) est bien demandé — sinon `picture` est absent côté API (à valider avant de conclure à un bug de code).
2. **Persistance** : à la création/màj de l'utilisateur, renseigner l'URL d'avatar provider uniquement si l'utilisateur n'a pas déjà une photo uploadée manuellement (l'upload manuel prime toujours). Réutiliser la même logique de priorité que Google.
3. **Affichage / fallback (composant avatar)** : si aucune photo (ni manuelle, ni provider) n'est disponible, afficher une icône générique ronde avec les initiales "DP" sur fond coloré (ex. bleu clair). Comportement identique quel que soit le provider.
4. **Aucune étape de confirmation** : récupération et affichage automatiques, sans prompt utilisateur.
### Critères d'acceptation
- [ ] La photo LinkedIn est récupérée automatiquement à la connexion et affichée en haut à droite du profil candidat.
- [ ] Sans photo LinkedIn, une icône ronde avec initiales "DP" sur fond coloré s'affiche.
- [ ] Une photo uploadée manuellement dans GetYourJob prime toujours sur la photo automatique (LinkedIn ou Google).
- [ ] Comportement cohérent avec Google (même logique de fallback et de priorité).
- [ ] Aucun message de confirmation n'est demandé à l'utilisateur.
### Routage
Fullstack (modif config NextAuth + persistance utilisateur côté serveur, plus composant avatar côté présentation). Petite surface, à traiter en TDD.
### Estimation
S
Description
### Problème
Actuellement, lors de la connexion via LinkedIn, la photo de profil du candidat n'est pas récupérée automatiquement, contrairement à la connexion via Google. Cela entraîne un affichage incomplet du profil (icône vide ou par défaut) si l'utilisateur n'a pas uploadé manuellement une photo dans son profil GetYourJob.
### Contexte
- Pour les connexions Google, la photo de profil est bien récupérée automatiquement (ou remplacée par une photo manuelle si l'utilisateur en ajoute une).
- Pour les connexions LinkedIn, aucune photo n'est récupérée, ce qui crée une incohérence dans l'expérience utilisateur.
- Le comportement attendu est une récupération automatique de la photo LinkedIn, sans étape de confirmation, avec un fallback vers une icône générique si aucune photo n'est disponible.
### Comportement proposé
1. Récupérer automatiquement la photo de profil LinkedIn dès la connexion (comme pour Google).
2. Si aucune photo n'est disponible, afficher une icône générique ronde avec les initiales "DP" et un fond coloré (ex. : bleu clair).
3. La photo manuelle uploadée par l'utilisateur dans son profil GetYourJob prime toujours sur la photo automatique (LinkedIn/Google).
## Acceptance criteria
['- [ ] La photo de profil LinkedIn est récupérée automatiquement lors de la connexion et affichée en haut à droite du profil candidat.', '- [ ] Si aucune photo LinkedIn n\'est disponible, une icône générique ronde avec les initiales "DP" et un fond coloré est affichée.', "- [ ] La photo manuelle uploadée par l'utilisateur dans son profil GetYourJob remplace toujours la photo automatique (LinkedIn ou Google).", '- [ ] Le comportement est cohérent avec celui de la connexion Google (même logique de fallback et de priorité).', "- [ ] Aucun message de confirmation n'est demandé à l'utilisateur pour l'affichage de la photo LinkedIn."]
## Classification
- bug
## Complexity
- 5/10 — L'intégration avec l'API LinkedIn pour récupérer la photo nécessite une gestion des permissions et des erreurs, mais le fallback et la logique de priorité sont déjà partiellement implémentés pour Google.
Files