đ ImplĂ©mentation PBKDF2 avec credentials navigateur â FonctionnalitĂ©s ajoutĂ©es: - SecureCredentialsService avec PBKDF2 (100k itĂ©rations) - Chiffrement AES-GCM des clĂ©s spend/scan - Interface utilisateur complĂšte pour gestion credentials - Tests unitaires complets - Architecture modulaire avec EventBus - Gestion mĂ©moire optimisĂ©e - Performance monitoring - Web Workers pour encodage asynchrone đĄïž SĂ©curitĂ©: - DĂ©rivation PBKDF2 avec salt unique - Chiffrement AES-GCM des clĂ©s sensibles - Validation force mot de passe - Stockage sĂ©curisĂ© IndexedDB + WebAuthn - Logging sĂ©curisĂ© sans exposition donnĂ©es đ§ Corrections: - Erreur 500 rĂ©solue (clĂ© dupliquĂ©e package.json) - Configuration Vite simplifiĂ©e - DĂ©pendances manquantes corrigĂ©es đ AmĂ©liorations: - Architecture dĂ©couplĂ©e avec repositories - Services spĂ©cialisĂ©s (PairingService, etc.) - Monitoring performance et mĂ©moire - Tests avec couverture complĂšte - Documentation technique dĂ©taillĂ©e
5.5 KiB
5.5 KiB
4NK Integration Guide
đŻ Modes d'utilisation
Le site 4NK peut ĂȘtre utilisĂ© de deux façons :
1. Mode Normal (Site autonome)
- URL : http://localhost:3004
- Interface : Header complet + navigation normale
- Utilisation : Application standalone
- Fonctionnalités : Toutes les fonctionnalités disponibles
2. Mode Iframe (Intégration externe)
- URL : http://localhost:3004 (détection automatique)
- Interface : Header masqué + menu intégré dans le contenu
- Utilisation : Intégration dans un site externe
- Fonctionnalités : Communication bidirectionnelle avec le parent
đ§ DĂ©tection automatique
Le site détecte automatiquement s'il est chargé dans une iframe :
// Détection iframe
if (window.parent !== window) {
// Mode iframe activé
document.body.classList.add('iframe-mode');
// Header masqué automatiquement
}
đ± Interface adaptative
Mode Normal
âââââââââââââââââââââââââââââââââââââââ
â Header (Navigation, Logo, etc.) â
âââââââââââââââââââââââââââââââââââââââ€
â Contenu principal â
â âââ Titre et description â
â âââ Interface de pairing â
â âââ Boutons d'action â
âââââââââââââââââââââââââââââââââââââââ
Mode Iframe
âââââââââââââââââââââââââââââââââââââââ
â Contenu principal (sans header) â
â âââ Titre et description â
â âââ Menu intĂ©grĂ© (Home, Account...) â
â âââ Interface de pairing â
â âââ Boutons d'action â
âââââââââââââââââââââââââââââââââââââââ
đ Communication iframe
Messages envoyés au parent
IFRAME_READY: Iframe initialiséMENU_NAVIGATION: Navigation du menuPAIRING_4WORDS_WORDS_GENERATED: 4 mots générésPAIRING_4WORDS_STATUS_UPDATE: Mise à jour du statutPAIRING_4WORDS_SUCCESS: Pairing réussiPAIRING_4WORDS_ERROR: Erreur de pairing
Messages reçus du parent
TEST_MESSAGE: Test de communicationPAIRING_4WORDS_CREATE: Créer un pairingPAIRING_4WORDS_JOIN: Rejoindre avec 4 mots
đ§Ș Tests d'intĂ©gration
Test rapide
# Ouvrir dans le navigateur
open examples/test-integration.html
Test complet
# Site externe d'exemple
open examples/external-site.html
đš Styles CSS
Les styles s'adaptent automatiquement :
/* Styles normaux */
.title-container { /* ... */ }
/* Styles iframe */
.iframe-mode .content-menu { /* ... */ }
.iframe-mode .menu-btn { /* ... */ }
đ Utilisation en production
1. Site autonome
<!-- Utilisation normale -->
<iframe src="https://your-4nk-site.com" width="100%" height="600px"></iframe>
2. Intégration personnalisée
<!-- Site externe -->
<div id="4nk-container">
<iframe
src="https://your-4nk-site.com"
sandbox="allow-scripts allow-same-origin allow-forms"
onload="init4NKIntegration(this)">
</iframe>
</div>
<script>
function init4NKIntegration(iframe) {
// Ăcouter les messages de l'iframe
window.addEventListener('message', (event) => {
if (event.origin !== 'https://your-4nk-site.com') return;
const { type, data } = event.data;
switch (type) {
case 'IFRAME_READY':
console.log('4NK iframe ready');
break;
case 'PAIRING_4WORDS_SUCCESS':
console.log('Pairing successful:', data.message);
break;
}
});
// Envoyer des commandes Ă l'iframe
function createPairing() {
iframe.contentWindow.postMessage({
type: 'PAIRING_4WORDS_CREATE',
data: {}
}, 'https://your-4nk-site.com');
}
}
</script>
đ SĂ©curitĂ©
Vérification d'origine
// Toujours vérifier l'origine des messages
window.addEventListener('message', (event) => {
if (event.origin !== 'https://trusted-4nk-site.com') {
return; // Ignorer les messages non autorisés
}
// Traiter le message
});
Sandbox iframe
<iframe
src="https://your-4nk-site.com"
sandbox="allow-scripts allow-same-origin allow-forms"
allow="clipboard-write">
</iframe>
đ Monitoring
Logs de communication
// Activer les logs détaillés
window.DEBUG_IFRAME = true;
// Ăcouter tous les messages
window.addEventListener('message', (event) => {
console.log('đš Message received:', {
origin: event.origin,
type: event.data.type,
data: event.data.data
});
});
đ DĂ©pannage
ProblĂšmes courants
-
Iframe ne se charge pas
- Vérifier les paramÚtres CORS
- Vérifier l'URL de l'iframe
- Vérifier les paramÚtres sandbox
-
Messages non reçus
- Vérifier la vérification d'origine
- Vérifier le format des messages
- Vérifier la console pour les erreurs
-
Styles cassés
- Vérifier la classe
iframe-mode - Vérifier les styles CSS conditionnels
- Vérifier la détection d'iframe
- Vérifier la classe
Debug mode
// Activer le mode debug
localStorage.setItem('4nk-debug', 'true');
// Voir les logs détaillés
console.log('4NK Debug Mode:', localStorage.getItem('4nk-debug'));