+22
−1
+2
−1
apps/api/src/scripts/amorcer-instance.ts
0 → 100644
+139
−0
Loading
Une base fraîchement migrée ne contient aucun compte, et rien ne
permettait d'en créer un. L'inscription publique est fermée par défaut,
et même ouverte elle produit un administrateur d'ORGANISATION, jamais
d'instance : l'organisation système et le premier INSTANCE_ADMIN
n'existaient que dans le jeu de démonstration.
Restaient donc deux issues à qui installe pour de bon : ouvrir son
instance avec des identifiants publiés dans le README, ou écrire à la
main dans PostgreSQL. Le message d'erreur du code disait lui-même
« rejouez le seed », c'est-à-dire : servez-vous des comptes de démo.
printf '%s' "$mdp" | docker compose exec -T app \
node apps/api/dist/scripts/amorcer-instance.js \
--email=... --nom=...
Le mot de passe se lit sur l'entrée standard, jamais en argument : la
ligne de commande d'un processus est lisible par tout utilisateur de la
machine, et resterait dans l'historique du shell.
La commande refuse de s'exécuter si un administrateur d'instance existe
déjà — elle sert à amorcer, pas à s'ajouter en douce à une instance en
service — et renvoie alors vers les gestes qui conviennent : la console
d'instance pour les comptes suivants, « mfa:reset » pour un second
facteur perdu.
L'organisation système est créée par « upsert » sur le même couple
slug/nom que le seed : les deux chemins d'amorçage doivent converger
vers UNE organisation système, pas en créer chacun la sienne.
Comme « mfa:reset », la commande demande un accès au serveur et à la
base : c'est ce qui en fait un privilège acceptable, puisque quiconque
en dispose peut de toute façon écrire directement dans la base.
Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>