anchorage_layer_simple/features/login-bout-en-bout-reste-a-faire.md
ncantu fe7f49b6cd Update API anchorage, services, and website skeleton
**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/*
2026-01-28 15:11:59 +01:00

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-skeleton
  • userwallet
  • service-login-verify
  • api-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 contract depuis le parent (écoute postMessage)
  • 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 sessionStorage aprè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 onProgress dans runCollectLoop
  • Affichage dans LoginCollectShare

Reste à faire :

  1. 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.)
  2. 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
  3. 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.ts
  • userwallet/src/hooks/useRelayNotifications.ts
  • userwallet/src/components/LoginCollectShare.tsx

2.3 Responsive design mobile (Priorité : Moyenne)

Statut : À vérifier et améliorer

Ce qui manque :

  1. 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)
  2. UX mobile

    • Gestes tactiles (swipe, etc.)
    • Tailles de boutons adaptées au tactile
    • Feedback visuel pour les actions
  3. 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-verify intégré dans website-skeleton
  • Utilisation de verifyLoginProof, NonceCache, buildAllowedPubkeysFromValidateurs
  • Instance de NonceCache créé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 :

  1. 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
  2. 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

  1. website-skeleton : Envoi du contrat au UserWallet (1.1)
  2. website-skeleton : Gestion de session utilisateur (1.2)
  3. website-skeleton : Interface responsive mobile (1.3)
  4. website-skeleton : Amélioration UX (1.4)

Priorité Haute (Blocant pour login fonctionnel)

  1. userwallet : Validation des écrans login (2.1) - À valider par tests

Priorité Moyenne (Améliore l'expérience)

  1. userwallet : Notifications relais pour mobile (2.2)
  2. userwallet : Responsive design mobile (2.3) - À vérifier
  3. api-relay : Support notifications push (4.1) - Optionnel

Priorité Basse (Optionnel)

  1. service-login-verify : Persistance NonceCache (3.2)

Workflow de login complet (cible)

Sur PC

  1. Utilisateur ouvre website-skeleton
  2. Clique sur "Se connecter" (ou iframe s'affiche automatiquement)
  3. Iframe UserWallet s'affiche
  4. website-skeleton envoie le contrat via postMessage à l'iframe
  5. UserWallet reçoit le contrat et met à jour le graphe
  6. Utilisateur sélectionne le service et le membre
  7. UserWallet construit le challenge et collecte les signatures
  8. UserWallet publie la preuve sur les relais
  9. UserWallet envoie login-proof au parent via postMessage
  10. website-skeleton vérifie la preuve avec service-login-verify
  11. Si acceptée : session ouverte, iframe masquée, interface "connecté" affichée
  12. Si refusée : erreur affichée, possibilité de réessayer

Sur Mobile

  1. Utilisateur ouvre website-skeleton (responsive)
  2. Clique sur "Se connecter"
  3. Iframe UserWallet s'affiche (adaptatif, responsive)
  4. Même workflow que PC
  5. 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-skeleton a déjà une intégration de base fonctionnelle (iframe, vérification, écoute messages).
  • Le package service-login-verify est déjà intégré et fonctionnel dans website-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.md
  • features/userwallet-ecrans-login-a-valider.md
  • features/service-login-verify.md
  • RESTE_A_FAIRE.md
  • website-skeleton/src/main.ts : exemple d'intégration complète
  • userwallet/docs/specs.md : spécifications complètes
  • service-login-verify/README.md : documentation du package