fixage du parcourt boostrap jusqaua la config du domain - #38
Conversation
There was a problem hiding this comment.
Avant de l'approuver, peux-tu appliquer les corrections et améliorations listées ci‑dessous ?
- Secret exposé — packagesapi.env
- Le fichier
packagesapi.envcontient des secrets (JWT_SECRET, MFA_ENCRYPTION_KEY). Ne laisse pas de clés réelles dans le dépôt.
Actions demandées :- Retire immédiatement
packagesapi.envdu commit (git rm --cached si utile). - Ajoute
packagesapi.envà.gitignore. - Ajoute à la place un
packagesapi.env.exampleavec des placeholders (EXAMPLE_JWT_SECRET=replace_me). - Si ces clés ont été publiées publiquement, considère-les compromises et rotate-les (JWT_SECRET, MFA_ENCRYPTION_KEY).
- Retire immédiatement
- Réactivité des boutons / état des mutations (React Query)
- Dans
packages/web/src/pages/SettingsPage.tsx,SetupDomainPage.tsx(et partout où utilisé) tu relies surisPending/ status === "pending". Avec React Query v4 il faut utiliserisLoading/ status === "loading(les valeurs"pending"/isPending` ne sont pas standard et risquent d'empêcher le disabling/feedback correct).
Actions demandées :- Remplace les checks
isPending/"pending"parisLoadingoustatus === "loading". - Vérifie que tous les boutons passent bien en disabled/isLoading pendant l'appel réseau.
- Ajoute un test manuel rapide (ou unit) qui simule une mutation longue pour valider l'UI.
- Remplace les checks
- Déconnexion sur erreur réseau (App.tsx / DomainGate)
DomainGatefaitif (meError) { auth.clear(); navigate("/login") }. Ça va déconnecter l'utilisateur sur toute erreur (même une 500 ou coupure réseau).
Actions demandées :- Ne clear/auth que pour des erreurs d'authentification explicites (401/403) ou pour un code d'erreur API structuré.
- Si l'API ne renvoie pas le statut HTTP dans
useMe, modifieapi.me()pour rejeter avec un objet d'erreur structuré (ex: { status: 401, code: 'unauthorized' }) afin que DomainGate puisse réagir correctement. - Évite le logout automatique sur erreurs transitoires.
- Vérification d'erreur MFA côté client (SetupDomainPage)
- Le code
onErrorteste le message d'erreur texte :message.includes("mfa"). Le matching textuel est fragile.
Actions demandées :- Faire remonter depuis l'API un code d'erreur structuré (ex: { code: "mfa_required" }) ou vérifier le status HTTP.
- Adapter le front pour utiliser ce code/status au lieu du texte.
- Choses mineures/UX & housekeeping
- Large changement de
package-lock.json: si ce n'est pas intentionnel, sépare la mise à jour des dépendances dans un PR dédié. - Regex de validation de domaine : la regex utilise des constructions avancées (lookbehind). Privilégie une validation plus robuste ou centralisée et ajoute des tests unitaires pour les cas limites.
- Redirections via
window.location.href/assign(après changement de domaine) sont correctes si tu veux forcer un reload complet — indique le en commentaire si c'est intentionnel.
- CI / tests
- Lance
npm run test/CI et joins le résultat ou corrige les tests qui échouent avant merger.
Si tu veux je peux :
- préparer le commit qui retire
packagesapi.env, ajoute.env.exampleet met à jour.gitignore, - et te proposer un patch concret pour remplacer
isPending/"pending"parisLoading/"loading"dans les fichiers touchés.
|
D'accord je m'y met... |
bright77777
left a comment
There was a problem hiding this comment.
packagesapi.env — Remplacer le commit par un .env.example (sans valeurs secrètes) ; supprimer le fichier sensible du repo et ajouter une entrée .gitignore. Si les secrets ont été poussés publiquement, planifier une rotation.
packages/web/src/App.tsx — Adjust DomainGate to explicitly allow these paths: ['/login','/bootstrap','/activate-mfa','/setup-domain'] as exceptions (or compute via a white-list). Cela évite boucles et autorise onboarding/public pages avant auth.
packages/web/src/pages/SetupDomainPage.tsx — Remplacer la détection d'erreur par inspection du status code : si error.status === 401/403 => toast spécifique "MFA non activée" + navigate('/activate-mfa'). Si le client API n'expose pas status, faire en sorte que req() renvoie un objet erreur standardisé.
packages/web/src/lib/useMe.tsx — Revoir refetchOnWindowFocus / refetchOnMount si les coûts réseau sont importants ; envisager staleTime raisonnable (p.ex. 5s-30s) plutôt que always.
packages/web/src/{SetupDomainPage.tsx,SettingsPage.tsx} — Factoriser la regex de validation du domaine dans un util exporté (ex: packages/web/src/lib/validation.ts) et réutiliser pour éviter duplication et erreurs futures.
Description
Cette PR corrige le flux d’onboarding et la configuration du domaine dans l’UI Web. Après bootstrap, le compte owner est désormais connecté automatiquement. Si l’utilisateur n’a pas encore activé la MFA, il est redirigé vers une page d’activation MFA avant de pouvoir accéder à
/setup-domain. La page de configuration de domaine affiche maintenant correctement l’état MFA et bloque l’enregistrement tant que la MFA n’est pas activée.Type de changement
Package(s) concerné(s)
Comment ça a été testé ?
npm run --workspace @hullbay/web typecheckvia WSL/setup-domainaprès activation MFAChecklist avant de demander une revue
npm run typecheckpasse sans erreurnpm run testpasse sans erreurNotes complémentaires
Ajout d’une nouvelle page
ActivateMfaPagepour centraliser l’enrôlement et la confirmation MFA.Closes #33