CLI pour connecter un environnement local aux environnements de recette et injecter les cookies d'authentification (XSRF-TOKEN, oneSessionId) dans les fichiers .env des frontends Vite.
Fonctionne sur MacOS, Linux et Windows. Projet en ESM ("type": "module").
- Node.js >= 24
- pnpm (gestionnaire de paquets)
- Les applications cibles ont une structure :
- à la racine :
/<racine_apps>/<application>/frontend/.env - ou sous entcore :
/<racine_apps>/entcore/<application>/frontend/.env
- à la racine :
git clone <repo>
cd dev-auth-fetcher
pnpm install
pnpm run build| Commande | Description |
|---|---|
onboard |
Configurer le répertoire racine des apps et générer les configs d'environnements |
connect |
Se connecter à un environnement et mettre à jour les .env des applications |
list-apps |
Lister les applications détectées (avec dossier frontend) |
reconnect-last |
Reconnexion automatique avec le dernier combo env / login / apps (sans prompts) |
Configure le répertoire racine des applications et génère les fichiers de configuration des environnements :
pnpm run dev onboard
# ou après build :
node bin/dev-auth-fetcher onboardVous serez invité à saisir le chemin du répertoire contenant vos applications : soit des dossiers <app>/frontend à la racine, soit (ou en plus) un sous-dossier entcore avec des apps entcore/<app>/frontend. Les fichiers dans config/environments/ (recette-ode1, recette-ode2, recette-release, local) sont créés par défaut.
Se connecter à un environnement de recette et mettre à jour les .env des applications choisies :
pnpm run dev connect
# ou
node bin/dev-auth-fetcher connectOptions de la commande connect :
-e, --env <id>: identifiant de l'environnement (ex.recette-ode1)-a, --app <name>: nom ou id d'application (ex.mon-appouentcore/mediacentrepour une app sous entcore)--all: cibler toutes les applications détectées-l, --login <login>: login utilisateur (sinon demandé en interactif)
Lors du premier connect pour un environnement, vous saisissez login, mot de passe et éventuellement un rôle (ex. Enseignant, Élève) pour identifier le compte. Après une connexion réussie, ces informations sont enregistrées. Aux connexions suivantes pour le même environnement, vous pouvez choisir un identifiant déjà enregistré (affiché avec le rôle entre parenthèses) ou « Nouvel identifiant ». Les credentials sont stockés par environnement et par utilisateur dans un fichier non versionné (voir Structure des fichiers).
Exemples :
dev-auth-fetcher connect --env recette-ode1 --all
dev-auth-fetcher connect -e recette-ode2 -a mon-app -l mon.login
dev-auth-fetcher connect -e recette-ode1 -a entcore/mediacentre # app sous entcoreRéutilise le dernier environnement, login et sélection d'applications enregistrés. Aucune question : connexion et mise à jour des .env directement.
dev-auth-fetcher reconnect-lastÀ utiliser après avoir fait au moins une fois connect (avec sélection d'apps). Si aucune dernière connexion n'est enregistrée, un message vous invitera à lancer d'abord connect.
Affiche les applications détectées (avec dossier frontend) dans le répertoire configuré :
dev-auth-fetcher list-apps-
Configuration globale :
config/app.config.jsonappsRoot: chemin racine des applicationsdefaultEnvironment: environnement par défaut
-
Environnements : un fichier par environnement dans
config/environments/- Ex.
recette-ode1.json:{ "id", "label", "url" }
- Ex.
-
Fichier .env cible (dans chaque
application/frontend/.envouentcore/application/frontend/.env) :VITE_XSRF_TOKEN=...VITE_ONE_SESSION_ID=...VITE_RECETTE=<url>
-
Identifiants enregistrés (par utilisateur, non versionnés, répertoire dans
.gitignore) :- Répertoire :
.dev-auth-fetcher/credentials/(à la racine du répertoire depuis lequel vous lancez la CLI). - Fichier :
<userId>.json(par défautuserId= nom d'utilisateur système ; peut être surchargé avec la variable d'environnementDEV_AUTH_USER). - Contenu : profils par environnement (login, mot de passe, rôle optionnel) et dernière connexion (env, login, apps) pour
reconnect-last.
- Répertoire :
| Commande | Description |
|---|---|
pnpm dev |
Exécution en mode dev (tsx, sources TypeScript ESM) |
pnpm build |
Build ESM de la CLI (sortie dans dist/) |
pnpm start |
Exécution du build : node dist/index.js |
pnpm test |
Lance les tests (Vitest) |
pnpm lint |
ESLint sur src/ et tests/ |
pnpm format |
Prettier : formatage des fichiers TS |
pnpm format:check |
Prettier : vérification du format sans écriture |
- Les chemins sont gérés avec
path.join/path.resolvepour être valides sur Windows, MacOS et Linux. - Les fichiers de configuration sont lus/écrits en UTF-8.
- L'authentification s'effectue via un appel HTTP (fetch) vers l'endpoint
/auth/logindes environnements de recette.
Usage interne / équipe.