Feature #124
Updated by Redmine Admin about 2 months ago
## 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 conversation:47