Extension navigateur (Manifest V3) pour 42 : elle affiche sur le profil Intra d’un étudiant un classement des correcteurs les plus fréquents (évaluations où l’étudiant a été corrigé), à partir de l’API officielle.
- Connexion OAuth 2.0 avec le compte 42 (scope
public). - Sur une page profil
https://profile.intra.42.fr/users/<login>, insertion d’un bloc Top Reviewers (top 10, barres de proportion, lien vers chaque profil). - Prise en charge des correcteurs anonymes (comptabilisés séparément, non listés dans le top).
- Popup : état de connexion, connexion / déconnexion, rappel d’aller sur un profil Intra pour voir le widget.
- Node.js (LTS recommandé)
- pnpm ou npm
- Une application OAuth côté 42 Intra avec un
client_idadapté à l’extension (voir ci-dessous).
-
Cloner le dépôt et installer les dépendances :
pnpm install
-
Créer un fichier
.envà la racine (non versionné) avec l’identifiant client OAuth :VITE_CLIENT_ID=votre_client_id_42
L’URI de redirection OAuth doit correspondre à celle fournie par Chrome pour les extensions :
chrome.identity.getRedirectURL()(souvent du typehttps://<EXTENSION_ID>.chromiumapp.org/). Elle doit être enregistrée dans la configuration de votre application sur l’Intra 42. -
L’échange du code OAuth contre un jeton d’accès passe par le proxy documenté dans PRIVACY.md (
42-top-reviewers-proxy.vercel.app). Pour un fork autonome, il faudra héberger un équivalent qui détient le client secret côté serveur.
pnpm devVite sert surtout à recompiler pendant le développement ; le chargement de l’extension se fait depuis le dossier de build (voir ci-dessous).
pnpm buildLes fichiers prêts à charger se trouvent dans dist/ (JS, HTML, manifest.json, icônes depuis public/).
pnpm build- Ouvrir
chrome://extensions - Activer le mode développeur
- Charger l’extension non empaquetée et choisir le dossier
dist/ - Ouvrir la popup, cliquer sur Connect with 42, puis visiter un profil sur profile.intra.42.fr.
| Élément | Rôle |
|---|---|
src/background/background.js |
Service worker : flux OAuth et stockage du jeton |
src/content/content.js |
Script injecté sur les profils Intra : appels API, widget UI |
src/popup/ |
Interface de la popup (connexion) |
src/auth/auth.js |
Lecture du jeton valide depuis chrome.storage.local |
src/api/intraApi.js |
Helpers API Intra (pagination des corrections) — le widget profil utilise sa propre logique dans content.js |
public/manifest.json |
Manifest MV3 + permissions |
vite.config.js |
Build multi-entrées (popup, background, content) |
Le traitement des données et les services tiers sont décrits dans PRIVACY.md.
Projet par TFHD (sabartho) — voir package.json pour la métadonnée author.