**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)
UserWallet Login
Site de login avec authentification secp256k1, conçu pour être utilisé en iframe par Channel Messages.
Fonctionnalités
- Authentification basée sur des clés secp256k1
- Communication avec le parent via
postMessage - Gestion de l'activation/désactivation du login par service
- Interface responsive et accessible
Installation
npm install
Développement
npm run dev
Le site sera accessible sur http://localhost:3018
Build
npm run build
Architecture
- Authentification : Génération de paires de clés secp256k1, signature de challenges
- Communication iframe : Messages
postMessagepour l'intégration - Stockage : LocalStorage pour les clés et la configuration des services
- Interface : React + TypeScript avec accessibilité (ARIA)
Types de messages iframe
auth-request: Demande d'authentification depuis le parentauth-response: Réponse avec signatureservice-toggle: Activation/désactivation d'un serviceservice-status: Envoi du statut des services