**Motivations:** - Add new features and fixes for userwallet application - Update documentation for pairing, login state machine, and sync - Add new utilities for bloom filters, nonce store, and contract versioning - Fix mempool websocket offline issues **Root causes:** - N/A (feature additions and improvements) **Correctifs:** - Fix mempool websocket offline handling - Update ESLint configuration **Evolutions:** - Add login state machine service and hook - Add sync loop service - Add bloom filter utilities for anti-replay and state visibility - Add nonce store and contract version utilities - Update pairing confirmation and graph resolver services - Add new documentation for features and fixes - Update userwallet components (LoginScreen, SyncScreen) - Update types for contract, identity, and messages **Pages affectées:** - userwallet/src/components/LoginScreen.tsx - userwallet/src/components/SyncScreen.tsx - userwallet/src/hooks/useChannel.ts - userwallet/src/hooks/useLoginStateMachine.ts (new) - userwallet/src/services/graphResolver.ts - userwallet/src/services/pairingConfirm.ts - userwallet/src/services/syncService.ts - userwallet/src/services/syncLoop.ts (new) - userwallet/src/services/loginStateMachine.ts (new) - userwallet/src/types/contract.ts - userwallet/src/types/identity.ts - userwallet/src/types/message.ts - userwallet/src/utils/canonical.ts - userwallet/src/utils/identity.ts - userwallet/src/utils/indexedDbStorage.ts - userwallet/src/utils/relay.ts - userwallet/src/utils/verification.ts - userwallet/src/utils/bloom.ts (new) - userwallet/src/utils/contractVersion.ts (new) - userwallet/src/utils/nonceStore.ts (new) - userwallet/eslint.config.mjs - userwallet/package.json - userwallet/package-lock.json - userwallet/docs/synthese.md - userwallet/docs/specs-champs-obligatoires-cnil.md (new) - api-relay/README.md - features/userwallet-pairing-words-only-finalise.md - features/userwallet-anti-rejeu-etats-visibles-bloom.md (new) - features/userwallet-bloom-usage-sync.md (new) - features/userwallet-contrat-login-reste-a-faire.md (new) - features/userwallet-ecrans-login-a-valider.md (new) - features/userwallet-eslint-fix.md (new) - features/userwallet-login-state-machine.md (new) - features/userwallet-validation-conformite.md (new) - fixKnowledge/mempool-websocket-offline-fix.md (new) - mempool (submodule) - hash_list.txt - hash_list_cache.txt
2.0 KiB
2.0 KiB
UserWallet – Écrans login (3.2) – À valider avant implémentation
Author: Équipe 4NK
Date: 2026-01-26
Statut
À valider avant implémentation. Les écrans listés dans « reste à faire » (sélection service, sélection membre, construction chemin login, message à valider, collecte mFA, publication, vérification locale + résultat) ne doivent pas être implémentés tant que ce document n’a pas été validé.
Contexte
Service fourni par l’iframe
- Le service (contrat + contrats fils complets du service) est fourni à l’appel de l’iframe via channel message (postMessage).
- Si le message n’est pas reçu : usage du contrat par défaut, défini en dur dans le code front, jusqu’à réception du message.
Écrans login actuels
- Les écrans du login sont déjà en place (sélection service/membre, chemin, challenge, preuve, publication).
- Reste à implémenter : les notifications en fonction des événements des relais, notamment :
- Collecte des signatures et clés de déchiffrement pour savoir quel message (hash) aller chercher sur le relai.
- Une fois le hash connu : récupération sur le relai des signatures, contrats, membres, pairs, actions, champs, etc.
- Les notifications doivent donc piloter : quel hash fetch, puis fetch signatures/clés et mise à jour du graphe (contrats, membres, pairs, actions, champs).
Écrans à préciser (après validation)
- Sélection service / sélection membre.
- Construction du chemin login.
- Message de login à valider.
- Collecte signatures mFA.
- Publication.
- Vérification locale + résultat.
Ces écrans évolueront avec l’avancement des tests (cf. reste à faire).
Références
features/userwallet-contrat-login-reste-a-faire.md(§ 3.2)userwallet/docs/specs.md(machine à états, écrans)userwallet/src/utils/iframeChannel.ts,userwallet/src/hooks/useChannel.ts