anchorage_layer_simple/docs/WEBSITE_SKELETON.md
ncantu 497bcf0819 Add real service contract for website-skeleton and improve iframe styling
**Motivations:**
- website-skeleton needs a real service contract with valid UUIDs and validators
- Service wallet required for production use with configurable public key
- Iframe styling needs improvement to remove scrollbars and match UserWallet theme

**Root causes:**
- DEFAULT_VALIDATEURS used placeholder public key that cannot verify signatures
- No service wallet generation script for production deployment
- Iframe had fixed height causing scrollbars and visual mismatch with dark theme

**Correctifs:**
- Created real service contract in src/serviceContract.ts with dedicated UUIDs (skeleton-service-uuid-4nkweb-2026)
- Added service wallet generation script (generate-service-wallet.mjs) with .env and .env.private files
- Improved iframe container styling: increased height (800px), dark background (#1a1a1a), better shadows, hidden scrollbars
- Added .env.private to .gitignore for security

**Evolutions:**
- Service contract automatically loaded on startup and sent to UserWallet iframe
- Public key configurable via VITE_SKELETON_SERVICE_PUBLIC_KEY environment variable
- Added npm script 'generate-wallet' for easy wallet generation
- Enhanced iframe visual integration with UserWallet dark theme

**Pages affectées:**
- website-skeleton/src/serviceContract.ts (new)
- website-skeleton/src/config.ts
- website-skeleton/src/main.ts
- website-skeleton/generate-service-wallet.mjs (new)
- website-skeleton/index.html
- website-skeleton/package.json
- website-skeleton/.gitignore
- website-skeleton/.env (new)
- website-skeleton/.env.private (new)
2026-01-28 17:28:50 +01:00

5.3 KiB
Raw Permalink Blame History

website-skeleton

Squelette dun site web qui intègre UserWallet en iframe : écoute des messages postMessage (login-proof, error, contract), vérification des preuves de login via service-login-verify, et affichage du statut (accepté / refusé). Connexion via un seul parcours : « Se connecter » puis authentification MFA dans l'iframe.

Objectif

Fournir un projet minimal, prêt à lemploi, pour:

  • embarquer UserWallet dans une page via iframe ;
  • communiquer avec liframe via postMessage (Channel Messages) ;
  • vérifier les preuves de login côté parent avec le package service-login-verify.

Utile comme base pour un service (certificator, zapwall, etc.) qui consomme UserWallet et doit valider les sessions.

Emplacement et structure

  • Dossier : website-skeleton/ à la racine du dépôt (à côté de userwallet/, service-login-verify/, api-relay/).
  • Stack : Vite, TypeScript, dépendance service-login-verify (file:../service-login-verify).

Fichiers principaux

Fichier Rôle
index.html Page avec iframe UserWallet, zone de statut, lien « Description du contrat », bouton « Se connecter »
contrat.html Page de description du contrat de service skeleton (labels, UUIDs, usage)
src/main.ts Chargement iframe, écoute message, envoi du contrat au clic « Se connecter », appel verifyLoginProof, mise à jour du statut
src/config.ts USERWALLET_ORIGIN, DEFAULT_VALIDATEURS (placeholder)
package.json Scripts dev / build / preview, dépendance service-login-verify
start.sh Build + vite preview sur le port 3024 (production)
vite.config.ts preview.allowedHosts: ['skeleton.certificator.4nkweb.com'] pour éviter 403 via proxy
website-skeleton.service Unité systemd pour servir le site
install-website-skeleton.sh Installation locale (build, systemd)
README.md Instructions dinstallation, configuration et utilisation

Prérequis

  • service-login-verify : exécuter npm run build dans ../service-login-verify avant dinstaller ou builder le skeleton.
  • UserWallet : à servir sur lURL configurée (USERWALLET_ORIGIN) pour que liframe fonctionne.

Installation et commandes

cd website-skeleton
npm install
npm run build
  • Développement : npm run dev → serveur sur http://localhost:3024.
  • Preview : npm run preview après build.

Configuration

Origine UserWallet

  • Fichier : src/config.ts.
  • Variable : USERWALLET_ORIGIN = URL de liframe et targetOrigin pour postMessage.
  • Défauts :
    • En dev : http://localhost:3018 (UserWallet en dev sur ce port).
    • En prod : https://userwallet.certificator.4nkweb.com.
  • Override : variable denvironnement VITE_USERWALLET_ORIGIN (ex. VITE_USERWALLET_ORIGIN=http://localhost:3018 npm run dev).

Validateurs

  • Fichier : src/config.ts, objet DEFAULT_VALIDATEURS.
  • Rôle : structure des validateurs de laction login (placeholder).
  • Usage réel : remplacer par les validateurs issus du contrat du service (action login), ou les charger depuis une API / un channel.

Utilisation

  1. Lancer UserWallet (dev ou déployé) sur lURL configurée.
  2. Lancer le skeleton (npm run dev ou servir dist/).
  3. Ouvrir la page du skeleton : liframe affiche UserWallet.
  4. Se connecter : cliquer «Se connecter» → envoi du contrat à liframe, affichage de liframe.
  5. Login MFA : effectuer le flux de login (MFA) dans liframe ; à la fin, UserWallet envoie login-proof au parent. Le skeleton appelle verifyLoginProof, puis affiche «Login accepté» ou «Login refusé : … ».
  6. Description du contrat : lien «Description du contrat» vers contrat.html.

Messages postMessage

Type Sens Rôle du skeleton
contract Parent → iframe Envoyé au clic sur «Se connecter» (et au load de liframe).
login-proof Iframe → parent Vérification via verifyLoginProof, mise à jour du statut.
error Iframe → parent Affichage du message derreur.

Déploiement

  • Port : 3024 (aucun conflit avec le Dashboard, 3020).
  • Backend : machine 192.168.1.168 (site + service systemd).
  • Proxy : 192.168.1.100 ; Nginx route skeleton.certificator.4nkweb.comhttp://192.168.1.168:3024.
  • Certificat : Let's Encrypt sur le proxy pour skeleton.certificator.4nkweb.com (via configure-nginx-proxy.sh / update-proxy-nginx.sh).

Installation

  1. Sur la machine backend (192.168.1.105) :

    ./website-skeleton/install-website-skeleton.sh
    

    Construit le front, installe et démarre le service systemd (website-skeleton.service).

  2. Proxy + certificat : à partir de la racine du dépôt,

    ./update-proxy-nginx.sh
    

    Configure Nginx sur le proxy (.100), génère le certificat pour skeleton.certificator.4nkweb.com, recharge Nginx.

Voir docs/DOMAINS_AND_PORTS.md pour les domaines et ports.

Références

  • Package vérification : service-login-verify/, features/service-login-verify.md
  • Iframe et login : userwallet/, features/userwallet-contrat-login-reste-a-faire.md3.7)
  • Relais : api-relay/, docs/DOMAINS_AND_PORTS.md