OAuth UX : onboarding automatique + gestion expiration
Date : 14/02/2026
Priorité : HAUTE
Status : A FAIRE
Problèmes actuels
- Token expiré = erreur silencieuse — pas de détection frontend, pas de prompt re-auth
- Création OAuth trop technique — l'utilisateur doit aller dans Google Cloud Console créer client_id/secret
- Instances créées manuellement — après OAuth, l'utilisateur doit créer chaque instance (Drive, Gmail, Sheets...) une par une
Solution cible
Court terme : gestion expiration
- Bannière sur les instances quand le token OAuth est expiré : "Token expiré — [Re-autoriser]"
- Bouton re-auth direct sur la page instance
- Notification push (ntfy) quand un token tombe en erreur
- Polling périodique du status des credentials OAuth
Moyen terme : onboarding auto
- Client_id/secret Google partagé (config serveur), pas par utilisateur
- Bouton unique "Connecter Google" sur la page d'inscription ou settings
- OAuth consent screen → callback → auto-création des instances selon les scopes :
drive → instance Google Drive
gmail.modify + gmail.send → instance Gmail
spreadsheets → instance Google Sheets
calendar → instance CalDAV/Google Calendar
generativelanguage → instance Gemini
- Même pattern pour LinkedIn, GitHub, etc.
- L'utilisateur arrive sur son dashboard avec tout connecté
Architecture
- Mapping
scope → connector_type dans le code
handleCallback() dans oauth.ts : après tokens reçus, itérer les scopes et créer les instances manquantes
- Credential partagée app-level vs credential par-user
Fichiers concernés
connectors-api/src/services/oauth.ts — auto-create instances on callback
connectors-front/src/routes/settings/oauth/ — bannière expiration + bouton re-auth
connectors-front/src/routes/connect/ — flow simplifié
connectors-api/src/index.ts — endpoint health-check credentials