**Motivations:** - Synchronisation des modifications sur l'API anchorage, les services et le website skeleton - Ajout de scripts de monitoring et de diagnostic pour l'API anchorage - Documentation des problèmes de mutex et de provisioning UTXO **Root causes:** - N/A (commit de synchronisation) **Correctifs:** - N/A (commit de synchronisation) **Evolutions:** - Ajout de scripts de monitoring et de diagnostic pour l'API anchorage - Amélioration de la gestion des mutex et des UTXOs - Mise à jour de la documentation **Pages affectées:** - api-anchorage/src/bitcoin-rpc.js - api-anchorage/src/routes/anchor.js - api-anchorage/src/routes/health.js - api-anchorage/src/server.js - api-anchorage/README-MONITORING.md - api-anchorage/cleanup-stale-locks.mjs - api-anchorage/diagnose.mjs - api-anchorage/unlock-utxos.mjs - service-login-verify/src/persistentNonceCache.ts - signet-dashboard/src/server.js - signet-dashboard/public/* - userwallet/src/hooks/useChannel.ts - userwallet/src/services/relayNotificationService.ts - userwallet/src/utils/defaultContract.ts - website-skeleton/src/* - docs/DOMAINS_AND_PORTS.md - docs/INTERFACES.md - features/* - fixKnowledge/*
10 KiB
Login fonctionnel de bout en bout PC et Mobile - Reste à faire
Author: Équipe 4NK
Date: 2026-01-28
Vue d'ensemble
Ce document liste ce qui reste à implémenter pour avoir un login fonctionnel de bout en bout sur PC et mobile pour les projets :
website-skeletonuserwalletservice-login-verifyapi-relay
1. website-skeleton
1.1 Envoi du contrat au UserWallet (Priorité : Haute)
Statut : ✅ Implémenté
Référence : website-skeleton/src/main.ts
Fait :
- ✅ Fonction
sendContractToIframe()qui envoie le contrat stocké à l'iframe - ✅ Stockage du contrat reçu pour envoi ultérieur (
storedContract,storedContratsFils,storedActions) - ✅ Envoi automatique du contrat au chargement de l'iframe (événement
load) - ✅ Envoi du contrat lors de la réception d'un nouveau contrat via
postMessage - ✅ Réception des messages
contractdepuis le parent (écoutepostMessage) - ✅ Extraction des validateurs depuis les contrats reçus
- ✅ Mise à jour des clés autorisées pour la vérification
Note : L'implémentation est complète. Le contrat est envoyé automatiquement à l'iframe dès qu'il est disponible.
1.2 Gestion de session utilisateur (Priorité : Haute)
Statut : ✅ Implémenté
Référence : website-skeleton/src/main.ts, website-skeleton/index.html
Fait :
- ✅ Stockage de session dans
sessionStorageaprès acceptation de la preuve - ✅ Fonctions
getSession(),setSession(),clearSession(),isLoggedIn() - ✅ Masquage de l'iframe après login réussi
- ✅ Affichage d'une interface "connecté" avec informations utilisateur (clés publiques)
- ✅ Bouton de déconnexion fonctionnel
- ✅ Vérification de session au chargement de la page
- ✅ Mise à jour automatique de l'interface selon l'état de connexion
- ✅ Vérification de la preuve de login avec
verifyLoginProof() - ✅ Affichage du statut (accepté/refusé)
Note : L'implémentation est complète. La protection des routes/endpoints reste à implémenter si nécessaire selon les besoins spécifiques du service.
1.3 Interface responsive mobile (Priorité : Moyenne)
Statut : ✅ Implémenté (à tester)
Fait :
- ✅ Meta viewport configuré (
width=device-width, initial-scale=1.0) - ✅ Styles CSS responsive avec media queries (768px, 480px)
- ✅ Adaptation de l'iframe pour mobile (hauteurs différentes selon taille d'écran)
- ✅ Boutons adaptés au tactile (min-height: 44px, width: 100% sur mobile)
- ✅ Layout flex adaptatif pour petits écrans
- ✅ Tailles de police adaptées
À tester :
- Vérifier le comportement sur différents appareils mobiles
- Tester le clavier virtuel (focus, scroll)
- Valider les gestes tactiles si nécessaire
1.4 Amélioration UX (Priorité : Moyenne)
Statut : ✅ Implémenté (améliorations possibles)
Fait :
- ✅ Bouton "Se connecter" clair et visible (style primary)
- ✅ Gestion de l'affichage/masquage de l'iframe selon l'état
- ✅ Indicateur de statut de connexion avec couleurs (accepted/rejected/pending)
- ✅ Messages d'erreur avec raison du refus
- ✅ Interface "connecté" avec informations utilisateur
- ✅ Styles améliorés (couleurs, transitions, bordures arrondies)
Améliorations possibles (optionnel) :
- Loading states plus visibles pendant la vérification
- Guide utilisateur pour le premier login
- Messages d'aide contextuels
2. userwallet
2.1 Validation des écrans login (Priorité : Haute)
Statut : À valider avant implémentation
Référence : features/userwallet-ecrans-login-a-valider.md, RESTE_A_FAIRE.md (§ 1.1)
Action requise : Tester les écrans login existants et valider leur fonctionnement sur PC et mobile.
Écrans à valider :
- Sélection service / sélection membre
- Construction du chemin login
- Message de login à valider
- Collecte signatures mFA
- Publication
- Vérification locale + résultat
2.2 Notifications relais pour mobile (Priorité : Haute)
Statut : Partiellement implémenté
Référence : RESTE_A_FAIRE.md (§ 1.2), features/userwallet-contrat-login-reste-a-faire.md (§ 3.2)
Fait :
- Progression collecte signatures (X/Y) implémentée via
onProgressdansrunCollectLoop - Affichage dans
LoginCollectShare
Reste à faire :
-
Notifications push (si extension mobile)
- Réagir aux événements push du relais pour savoir quel hash fetch
- Implémenter un mécanisme de notification (Service Worker, Web Push, etc.)
-
Fetch automatique des données
- Une fois le hash connu (via notification ou autre) : récupération sur le relai des signatures, contrats, membres, pairs, actions, champs
- Les notifications doivent piloter : quel hash fetch, puis fetch signatures/clés et mise à jour du graphe
-
Optimisation pour mobile
- Réduire les appels réseau inutiles
- Gérer les reconnexions réseau
- Optimiser la collecte de signatures sur mobile (batterie, données)
Fichiers concernés :
userwallet/src/services/relayNotificationService.tsuserwallet/src/hooks/useRelayNotifications.tsuserwallet/src/components/LoginCollectShare.tsx
2.3 Responsive design mobile (Priorité : Moyenne)
Statut : À vérifier et améliorer
Ce qui manque :
-
Interface responsive
- Vérifier que tous les écrans login sont utilisables sur mobile
- Adapter les formulaires pour petits écrans
- Gérer le clavier virtuel (focus, scroll)
-
UX mobile
- Gestes tactiles (swipe, etc.)
- Tailles de boutons adaptées au tactile
- Feedback visuel pour les actions
-
Performance mobile
- Optimiser le chargement initial
- Réduire la consommation mémoire
- Gérer les limites de stockage IndexedDB sur mobile
3. service-login-verify
3.1 Intégration dans website-skeleton (Priorité : Basse)
Statut : Déjà intégré et fonctionnel
Fait :
- Package
service-login-verifyintégré danswebsite-skeleton - Utilisation de
verifyLoginProof,NonceCache,buildAllowedPubkeysFromValidateurs - Instance de
NonceCachecréée et utilisée - Construction des clés autorisées depuis les validateurs
- Vérification des preuves reçues
Note : L'intégration est complète et fonctionnelle. Aucune action requise.
3.2 Persistance du NonceCache (Priorité : Basse - Optionnel)
Statut : Actuellement en mémoire uniquement
Référence : RESTE_A_FAIRE.md (§ 2.1)
Description : Le NonceCache actuel est en mémoire avec TTL configurable. Une persistance optionnelle (IndexedDB, localStorage, etc.) peut être ajoutée si nécessaire pour éviter les rejeux après redémarrage du service.
Action requise : Implémenter uniquement si besoin de persistance entre redémarrages du service.
4. api-relay
4.1 Support notifications push pour mobile (Priorité : Moyenne)
Statut : À vérifier
Ce qui manque :
-
Notifications push (optionnel)
- Si support Web Push : endpoint pour s'abonner aux notifications
- Envoyer des notifications quand de nouveaux messages/signatures/clés sont disponibles
- Gérer les abonnements par hash ou par service
-
Optimisation pour mobile
- Réduire la taille des réponses
- Support de la compression
- Pagination pour les grandes listes
Note : Le modèle actuel est pull-only (GET). Les notifications push sont optionnelles mais amélioreraient l'expérience mobile.
Synthèse par priorité
✅ Complété dans website-skeleton
- ✅ website-skeleton : Envoi du contrat au UserWallet (1.1)
- ✅ website-skeleton : Gestion de session utilisateur (1.2)
- ✅ website-skeleton : Interface responsive mobile (1.3)
- ✅ website-skeleton : Amélioration UX (1.4)
Priorité Haute (Blocant pour login fonctionnel)
- userwallet : Validation des écrans login (2.1) - À valider par tests
Priorité Moyenne (Améliore l'expérience)
- userwallet : Notifications relais pour mobile (2.2)
- userwallet : Responsive design mobile (2.3) - À vérifier
- api-relay : Support notifications push (4.1) - Optionnel
Priorité Basse (Optionnel)
- service-login-verify : Persistance NonceCache (3.2)
Workflow de login complet (cible)
Sur PC
- Utilisateur ouvre website-skeleton
- Clique sur "Se connecter" (ou iframe s'affiche automatiquement)
- Iframe UserWallet s'affiche
- website-skeleton envoie le contrat via
postMessageà l'iframe - UserWallet reçoit le contrat et met à jour le graphe
- Utilisateur sélectionne le service et le membre
- UserWallet construit le challenge et collecte les signatures
- UserWallet publie la preuve sur les relais
- UserWallet envoie
login-proofau parent viapostMessage - website-skeleton vérifie la preuve avec
service-login-verify - Si acceptée : session ouverte, iframe masquée, interface "connecté" affichée
- Si refusée : erreur affichée, possibilité de réessayer
Sur Mobile
- Utilisateur ouvre website-skeleton (responsive)
- Clique sur "Se connecter"
- Iframe UserWallet s'affiche (adaptatif, responsive)
- Même workflow que PC
- Différence : Notifications push pour informer des nouvelles signatures disponibles (si implémenté)
Notes importantes
- Les éléments marqués "À valider" nécessitent une validation explicite avant implémentation.
website-skeletona déjà une intégration de base fonctionnelle (iframe, vérification, écoute messages).- Le package
service-login-verifyest déjà intégré et fonctionnel danswebsite-skeleton. - Les points bloquants principaux sont : l'envoi du contrat à l'iframe et la gestion de session.
- Les écrans login de userwallet sont en place mais nécessitent validation.
- Les notifications push sont optionnelles mais amélioreraient l'expérience mobile.
Références
features/userwallet-contrat-login-reste-a-faire.mdfeatures/userwallet-ecrans-login-a-valider.mdfeatures/service-login-verify.mdRESTE_A_FAIRE.mdwebsite-skeleton/src/main.ts: exemple d'intégration complèteuserwallet/docs/specs.md: spécifications complètesservice-login-verify/README.md: documentation du package