sunuid-sdk 1.0.27 → 1.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/sunuid-sdk.esm.js +11 -9
- package/dist/sunuid-sdk.esm.js.map +1 -1
- package/dist/sunuid-sdk.js +11 -9
- package/dist/sunuid-sdk.js.map +1 -1
- package/dist/sunuid-sdk.min.js +1 -1
- package/dist/sunuid-sdk.min.js.map +1 -1
- package/package.json +1 -1
package/dist/sunuid-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunuid-sdk.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 2, // Type par défaut (2 = authentification)\n partnerName: 'SunuID', // Nom du partenaire par défaut\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null,\n // Nouvelles options de sécurité\n enableSecurityLogs: true,\n validateInputs: true,\n maxRetries: 3,\n requestTimeout: 10000, // 10 secondes\n // Options d'initialisation sécurisée\n secureInit: false,\n secureInitUrl: 'http://localhost:8081/secure-init.php',\n token: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n // Initialisation asynchrone\n this.initPromise = this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n async init() {\n try {\n // Initialisation sécurisée si activée\n if (this.config.secureInit) {\n await this.secureInit();\n } else {\n // Validation sécurisée des paramètres\n if (this.config.validateInputs) {\n this.validateSecurityParams();\n }\n }\n\n // Log de sécurité pour l'initialisation\n this.logSecurityEvent('SDK_INIT_START', {\n apiUrl: this.config.apiUrl,\n type: this.config.type,\n partnerName: this.config.partnerName,\n secureInit: this.config.secureInit\n });\n\n // Obscurcir les credentials dans les logs\n this.obfuscateCredentials();\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n this.logSecurityEvent('SDK_INIT_SUCCESS');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n \n } catch (error) {\n this.logSecurityEvent('SDK_INIT_ERROR', { error: error.message });\n throw error;\n }\n }\n\n /**\n * Initialisation sécurisée via PHP\n */\n async secureInit() {\n try {\n this.logSecurityEvent('SECURE_INIT_START');\n \n const initData = {\n type: this.config.type,\n partnerName: this.config.partnerName,\n theme: this.config.theme\n };\n\n const response = await fetch(this.config.secureInitUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(initData)\n });\n\n if (!response.ok) {\n throw new Error(`Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n \n if (!result.success) {\n throw new Error(result.error || 'Erreur lors de l\\'initialisation sécurisée');\n }\n\n // Stocker le token et les données sécurisées\n this.config.token = result.data.token;\n this.config.apiUrl = result.data.api_url;\n \n // Décoder le token pour récupérer les credentials\n const decodedToken = this.decodeSecureToken(result.data.token);\n if (decodedToken) {\n this.config.clientId = decodedToken.client_id;\n this.config.secretId = decodedToken.secret_id;\n } else {\n throw new Error('Impossible de décoder le token sécurisé');\n }\n \n this.config.expiresIn = result.data.expires_in;\n this.config.maxRequests = result.data.max_requests;\n this.config.requestCount = 0;\n\n this.logSecurityEvent('SECURE_INIT_SUCCESS', {\n expiresIn: result.data.expires_in,\n maxRequests: result.data.max_requests\n });\n\n console.log('✅ Initialisation sécurisée réussie');\n \n } catch (error) {\n this.logSecurityEvent('SECURE_INIT_ERROR', { error: error.message });\n throw new Error(`Échec de l'initialisation sécurisée: ${error.message}`);\n }\n }\n\n /**\n * Décoder le token sécurisé\n */\n decodeSecureToken(token) {\n try {\n const parts = token.split('.');\n if (parts.length !== 2) {\n console.error('❌ Format de token invalide');\n return null;\n }\n \n const [payload, signature] = parts;\n \n // Décoder le payload (base64)\n const decodedPayload = atob(payload);\n const tokenData = JSON.parse(decodedPayload);\n \n // Vérifier l'expiration\n if (tokenData.exp && tokenData.exp < Date.now() / 1000) {\n console.error('❌ Token expiré');\n return null;\n }\n \n console.log('✅ Token décodé avec succès');\n return tokenData;\n \n } catch (error) {\n console.error('❌ Erreur décodage token:', error);\n return null;\n }\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Obtenir le nom du type à partir du numéro\n */\n getTypeName(type) {\n switch(type) {\n case 1: return 'KYC';\n case 2: return 'AUTH';\n case 3: return 'SIGNATURE';\n default: return `TYPE-${type}`;\n }\n }\n\n /**\n * Validation sécurisée des paramètres\n */\n validateSecurityParams() {\n const errors = [];\n \n // Validation du clientId\n if (!this.config.clientId || typeof this.config.clientId !== 'string') {\n errors.push('clientId invalide ou manquant');\n } else if (this.config.clientId.length < 10) {\n errors.push('clientId trop court');\n }\n \n // Validation du secretId\n if (!this.config.secretId || typeof this.config.secretId !== 'string') {\n errors.push('secretId invalide ou manquant');\n } else if (this.config.secretId.length < 32) {\n errors.push('secretId trop court (minimum 32 caractères)');\n }\n \n // Validation de l'URL API\n if (!this.config.apiUrl || !this.isValidUrl(this.config.apiUrl)) {\n errors.push('apiUrl invalide');\n }\n \n // Validation du type\n if (![1, 2, 3].includes(this.config.type)) {\n errors.push('type invalide (doit être 1, 2 ou 3)');\n }\n \n if (errors.length > 0) {\n this.logSecurityEvent('VALIDATION_ERROR', { errors });\n throw new Error(`Paramètres de sécurité invalides: ${errors.join(', ')}`);\n }\n \n this.logSecurityEvent('VALIDATION_SUCCESS');\n }\n\n /**\n * Validation d'URL sécurisée\n */\n isValidUrl(string) {\n try {\n const url = new URL(string);\n return url.protocol === 'https:' || url.protocol === 'http:';\n } catch (_) {\n return false;\n }\n }\n\n /**\n * Logs de sécurité\n */\n logSecurityEvent(event, data = {}) {\n if (!this.config.enableSecurityLogs) return;\n \n const securityLog = {\n timestamp: new Date().toISOString(),\n event: event,\n data: data,\n userAgent: navigator.userAgent,\n url: window.location.href\n };\n \n console.warn('🔒 [SECURITY]', securityLog);\n \n // Stocker les logs de sécurité (optionnel)\n if (!window.SunuIDSecurityLogs) {\n window.SunuIDSecurityLogs = [];\n }\n window.SunuIDSecurityLogs.push(securityLog);\n }\n\n /**\n * Chiffrement simple des credentials (pour éviter l'exposition en clair)\n */\n obfuscateCredentials() {\n // Stocker les vraies valeurs pour les logs de sécurité\n this.config.originalClientId = this.config.clientId;\n this.config.originalSecretId = this.config.secretId;\n \n // Créer des versions obfusquées pour l'affichage uniquement\n if (this.config.clientId) {\n this.config.clientIdDisplay = this.config.clientId.replace(/(.{3}).*(.{3})/, '$1***$2');\n }\n if (this.config.secretId) {\n this.config.secretIdDisplay = this.config.secretId.replace(/(.{4}).*(.{4})/, '$1***$2');\n }\n }\n\n /**\n * Validation des entrées utilisateur\n */\n sanitizeInput(input) {\n if (typeof input !== 'string') return input;\n \n // Protection contre les injections XSS basiques\n return input\n .replace(/[<>]/g, '') // Supprimer les balises HTML\n .replace(/javascript:/gi, '') // Supprimer les protocoles dangereux\n .trim();\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n // Attendre l'initialisation si nécessaire\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n \n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.currentQRUrl = qrImageUrl; // Stocker l'URL pour getQRCode()\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n \n // Générer le QR code personnalisé avec le type + code de l'API + socket ID\n if (this.pendingQRInfo && response.data.code) {\n // Attendre que le socket ID soit bien défini\n const waitForSocketId = () => {\n if (this.socket && this.socket.id && this.socket.id !== 'unknown') {\n const socketId = this.socket.id;\n const qrContent = `${this.config.type}-${response.data.code}-${socketId}`;\n \n // Utiliser le partnerName de la réponse API et le nom du type\n const partnerName = response.data.partnerName || this.config.partnerName || 'SunuID';\n const typeName = this.getTypeName(this.config.type);\n const qrLabel = `${typeName} - ${partnerName}`;\n \n this.generateCustomQRCode(qrContent, qrLabel, this.pendingQRInfo.options);\n this.pendingQRInfo = null; // Nettoyer\n } else {\n // Réessayer après un délai si le socket ID n'est pas encore disponible\n setTimeout(waitForSocketId, 100);\n }\n };\n \n waitForSocketId();\n }\n \n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n code: response.data.code,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.error('Stack trace complet:', error.stack);\n console.error('Configuration SDK:', {\n apiUrl: this.config.apiUrl,\n type: this.config.type,\n secureInit: this.config.secureInit,\n clientId: this.config.clientId ? '***' + this.config.clientId.slice(-4) : 'null',\n secretId: this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null'\n });\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n // Attendre l'initialisation si nécessaire\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n \n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n \n // Générer le QR code personnalisé avec le type + code de l'API + socket ID\n if (this.pendingQRInfo && response.data.code) {\n // Attendre que le socket ID soit bien défini\n const waitForSocketId = () => {\n if (this.socket && this.socket.id && this.socket.id !== 'unknown') {\n const socketId = this.socket.id;\n const qrContent = `${type}-${response.data.code}-${socketId}`;\n \n // Utiliser le partnerName de la réponse API et le nom du type\n const partnerName = response.data.partnerName || this.config.partnerName || 'SunuID';\n const typeName = this.getTypeName(type);\n const qrLabel = `${typeName} - ${partnerName}`;\n \n this.generateCustomQRCode(qrContent, qrLabel, this.pendingQRInfo.options);\n this.pendingQRInfo = null; // Nettoyer\n } else {\n // Réessayer après un délai si le socket ID n'est pas encore disponible\n setTimeout(waitForSocketId, 100);\n }\n };\n \n waitForSocketId();\n }\n \n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.error('Stack trace complet:', error.stack);\n console.error('Configuration SDK (Custom):', {\n apiUrl: this.config.apiUrl,\n type: type,\n secureInit: this.config.secureInit,\n clientId: this.config.clientId ? '***' + this.config.clientId.slice(-4) : 'null',\n secretId: this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null'\n });\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 1;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n async generateSignatureQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour Signature\n this.config.type = 3;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n \n // Afficher un loader en attendant la réponse API et la connexion socket\n const typeName = this.getTypeName(type);\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Vérification KYC' : type === 2 ? 'Authentification' : type === 3 ? 'Signature' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\" id=\"sunuid-qr-container\">\n <div style=\"text-align: center; padding: 40px;\">\n <div class=\"sunuid-loader\">\n <div class=\"sunuid-spinner\"></div>\n <p style=\"margin-top: 20px; color: #666;\">Initialisation en cours...</p>\n <p style=\"font-size: 12px; color: #999; margin-top: 10px;\">Connexion API et WebSocket</p>\n <p style=\"font-size: 11px; color: #ccc; margin-top: 5px;\">Attente du Socket ID...</p>\n </div>\n </div>\n </div>\n <div class=\"sunuid-qr-instructions\" style=\"display: none;\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\" style=\"display: none;\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Stocker les informations pour la génération ultérieure\n this.pendingQRInfo = {\n containerId,\n type,\n options\n };\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Générer un QR code personnalisé avec PHP Endroid\n */\n async generateCustomQRCode(content, label, options = {}) {\n try {\n console.log('🎨 Début génération QR personnalisé avec PHP...');\n console.log('📄 Contenu:', content);\n console.log('🏷️ Label:', label);\n \n const qrContainer = document.getElementById('sunuid-qr-container');\n if (!qrContainer) {\n console.error('❌ QR container not found');\n this.displayFallbackImage();\n return;\n }\n \n console.log('✅ QR container trouvé');\n\n // Nettoyer le conteneur\n qrContainer.innerHTML = '<div style=\"text-align: center; padding: 20px;\"><p>Génération QR code avec PHP...</p></div>';\n\n // Appeler l'endpoint PHP\n console.log('🔄 Appel endpoint PHP...');\n const response = await fetch('http://localhost:8081/qr-generator.php', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n content: content,\n label: label,\n size: 300,\n margin: 10\n })\n });\n \n console.log('📥 Réponse PHP reçue - Status:', response.status);\n \n if (!response.ok) {\n throw new Error(`Erreur HTTP: ${response.status}`);\n }\n \n const responseData = await response.json();\n \n if (!responseData.success) {\n throw new Error(`Erreur PHP: ${responseData.error}`);\n }\n \n console.log('✅ QR code généré par PHP avec succès');\n console.log('📊 Taille:', responseData.data.size + 'px');\n console.log('📊 Longueur base64:', responseData.data.length + ' caractères');\n\n // Stocker l'URL du QR code pour getQRCode()\n this.currentQRUrl = responseData.data.dataUrl;\n \n // Créer le conteneur avec le QR code PHP\n qrContainer.innerHTML = `\n <div class=\"sunuid-qr-ready\" style=\"text-align: center; padding: 20px;\">\n <img src=\"${responseData.data.dataUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; border: 2px solid #ddd; border-radius: 10px;\">\n </div>\n `;\n \n // Afficher les instructions et le statut maintenant que le QR est prêt\n const instructionsElement = qrContainer.parentElement.querySelector('.sunuid-qr-instructions');\n const statusElement = qrContainer.parentElement.querySelector('.sunuid-qr-status');\n \n if (instructionsElement) {\n instructionsElement.style.display = 'block';\n instructionsElement.classList.add('sunuid-qr-ready');\n }\n if (statusElement) {\n statusElement.style.display = 'block';\n statusElement.classList.add('sunuid-qr-ready');\n }\n \n console.log('✅ QR code PHP affiché dans le conteneur');\n\n } catch (error) {\n console.error('❌ Erreur génération QR PHP:', error);\n console.error('Stack trace:', error.stack);\n this.displayFallbackImage();\n }\n }\n\n /**\n * Ajouter le logo au centre du QR code\n */\n addLogoToCenter(ctx, x, y, width, height) {\n try {\n // Créer une image pour le logo\n const logo = new Image();\n logo.onload = () => {\n const logoSize = 40;\n const logoX = x + (width - logoSize) / 2;\n const logoY = y + (width - logoSize) / 2;\n\n // Dessiner un fond blanc pour le logo\n ctx.fillStyle = 'white';\n ctx.fillRect(logoX - 2, logoY - 2, logoSize + 4, logoSize + 4);\n\n // Dessiner le logo\n ctx.drawImage(logo, logoX, logoY, logoSize, logoSize);\n };\n logo.src = 'src/logoqr.png';\n } catch (error) {\n console.warn('Logo non disponible:', error);\n }\n }\n\n /**\n * Afficher l'image de fallback\n */\n displayFallbackImage() {\n console.log('⚠️ Affichage de l\\'image de fallback');\n const qrContainer = document.getElementById('sunuid-qr-container');\n if (qrContainer) {\n qrContainer.innerHTML = `\n <div style=\"text-align: center; padding: 20px; color: #666;\">\n <p>⚠️ Génération QR personnalisé non disponible</p>\n <p>Utilisation de l'image par défaut</p>\n <p><strong>Debug:</strong> QRCode disponible: ${typeof QRCode !== 'undefined'}</p>\n <p><strong>Debug:</strong> Container trouvé: ${qrContainer !== null}</p>\n </div>\n `;\n } else {\n console.error('❌ Container QR non trouvé pour fallback');\n }\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${String(type).toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API sécurisée\n */\n async makeRequest(endpoint, data) {\n // Validation de sécurité\n if (!this.isInitialized) {\n this.logSecurityEvent('REQUEST_BEFORE_INIT', { endpoint });\n throw new Error('SDK non initialisé');\n }\n\n // Vérifier les limites de requêtes pour l'initialisation sécurisée\n if (this.config.secureInit) {\n this.config.requestCount++;\n if (this.config.requestCount > this.config.maxRequests) {\n this.logSecurityEvent('API_REQUEST_LIMIT_EXCEEDED', { \n requestCount: this.config.requestCount,\n maxRequests: this.config.maxRequests \n });\n throw new Error('Limite de requêtes dépassée');\n }\n }\n\n // Sanitisation des données\n const sanitizedData = this.sanitizeRequestData(data);\n \n // Debug: Afficher les données envoyées\n console.log('🔍 Debug makeRequest - endpoint:', endpoint);\n console.log('🔍 Debug makeRequest - apiUrl:', this.config.apiUrl);\n console.log('🔍 Debug makeRequest - url:', `${this.config.apiUrl}${endpoint}`);\n console.log('🔍 Debug makeRequest - data:', JSON.stringify(sanitizedData, null, 2));\n console.log('🔍 Debug makeRequest - secureInit:', this.config.secureInit);\n console.log('🔍 Debug makeRequest - isInitialized:', this.isInitialized);\n \n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Debug: Afficher l'URL finale\n console.log('🔍 URL finale construite:', url);\n console.log('🔍 EndpointPath:', endpointPath);\n console.log('🔍 SunuIDConfig endpoints:', JSON.stringify(window.SunuIDConfig?.endpoints));\n \n // Log de sécurité pour la requête\n this.logSecurityEvent('API_REQUEST_START', {\n endpoint: endpointPath,\n url: url,\n dataKeys: Object.keys(sanitizedData),\n secureInit: this.config.secureInit\n });\n \n let retryCount = 0;\n const maxRetries = this.config.maxRetries;\n \n while (retryCount <= maxRetries) {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.requestTimeout);\n \n // Headers minimaux (API SunuID n'accepte que les headers essentiels)\n const headers = {\n 'Content-Type': 'application/json'\n };\n\n // Note: En mode sécurisé, les credentials sont dans le body\n // Pas besoin d'ajouter de header spécial pour éviter les problèmes CORS\n // if (this.config.secureInit && this.config.token) {\n // headers['X-Secure-Token'] = this.config.token;\n // }\n \n const response = await fetch(url, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(sanitizedData),\n signal: controller.signal\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n this.logSecurityEvent('API_REQUEST_ERROR', {\n status: response.status,\n statusText: response.statusText,\n error: errorData.message\n });\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n \n this.logSecurityEvent('API_REQUEST_SUCCESS', {\n endpoint: endpointPath,\n responseKeys: Object.keys(result)\n });\n \n return result;\n \n } catch (error) {\n retryCount++;\n \n if (error.name === 'AbortError') {\n this.logSecurityEvent('API_REQUEST_TIMEOUT', { retryCount });\n if (retryCount > maxRetries) {\n throw new Error('Timeout de la requête API');\n }\n continue;\n }\n \n if (retryCount > maxRetries) {\n this.logSecurityEvent('API_REQUEST_MAX_RETRIES', { \n retryCount, \n error: error.message \n });\n throw error;\n }\n \n // Attendre avant de réessayer\n await new Promise(resolve => setTimeout(resolve, 1000 * retryCount));\n }\n }\n }\n\n /**\n * Sanitisation des données de requête\n */\n sanitizeRequestData(data) {\n const sanitized = {};\n \n for (const [key, value] of Object.entries(data)) {\n if (typeof value === 'string') {\n sanitized[key] = this.sanitizeInput(value);\n } else if (typeof value === 'object' && value !== null) {\n sanitized[key] = this.sanitizeRequestData(value);\n } else {\n sanitized[key] = value;\n }\n }\n \n // Ajouter les credentials dans le body (API SunuID les attend ici)\n // Utiliser les vraies valeurs (originales) si disponibles, sinon les valeurs directes\n sanitized.client_id = this.config.originalClientId || this.config.clientId;\n sanitized.secret_id = this.config.originalSecretId || this.config.secretId;\n \n // Debug: Vérifier les credentials\n console.log('🔍 Credentials dans sanitizeRequestData - clientId:', this.config.clientId);\n console.log('🔍 Credentials dans sanitizeRequestData - secretId:', this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedClientId:', sanitized.client_id);\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedSecretId:', sanitized.secret_id ? '***' + sanitized.secret_id.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - data complet:', JSON.stringify(sanitized, null, 2));\n \n // Debug: Vérifier les credentials\n console.log('🔍 Credentials dans sanitizeRequestData - clientId:', this.config.clientId);\n console.log('🔍 Credentials dans sanitizeRequestData - secretId:', this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedClientId:', sanitized.client_id);\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedSecretId:', sanitized.secret_id ? '***' + sanitized.secret_id.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - data complet:', JSON.stringify(sanitized, null, 2));\n \n return sanitized;\n }\n\n /**\n * Générer un ID de requête unique\n */\n generateRequestId() {\n return 'req_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Obtenir l'URL du QR code généré\n */\n getQRCode() {\n // Retourner l'URL du QR code si disponible\n if (this.currentQRUrl) {\n return this.currentQRUrl;\n }\n \n // Sinon, retourner une URL par défaut ou null\n return null;\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n this.logSecurityEvent('SDK_DESTROY');\n console.log('SunuID SDK détruit');\n }\n\n /**\n * Obtenir les logs de sécurité\n */\n getSecurityLogs() {\n return window.SunuIDSecurityLogs || [];\n }\n\n /**\n * Nettoyer les logs de sécurité\n */\n clearSecurityLogs() {\n window.SunuIDSecurityLogs = [];\n this.logSecurityEvent('SECURITY_LOGS_CLEARED');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","partnerName","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","enableSecurityLogs","validateInputs","maxRetries","requestTimeout","secureInit","secureInitUrl","token","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","initPromise","init","_createClass","key","value","_init","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","validateSecurityParams","logSecurityEvent","obfuscateCredentials","console","log","initWebSocket","v","error","message","a","apply","_secureInit","_callee2","initData","response","result","decodedToken","_t2","_context2","fetch","method","headers","body","JSON","stringify","ok","Error","concat","status","json","success","data","api_url","decodeSecureToken","client_id","secret_id","expiresIn","expires_in","maxRequests","max_requests","requestCount","parts","split","_parts","_slicedToArray","payload","signature","decodedPayload","atob","tokenData","parse","exp","Date","now","_this","io","warn","setTimeout","ip","getClientIP","query","userId","username","on","id","reason","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","getTypeName","errors","push","isValidUrl","includes","join","string","url","URL","protocol","_","event","securityLog","timestamp","toISOString","userAgent","navigator","location","href","SunuIDSecurityLogs","originalClientId","originalSecretId","clientIdDisplay","replace","secretIdDisplay","sanitizeInput","input","trim","emitWebSocketEvent","connected","emit","getWebSocketStatus","forceWebSocketInit","_generateQR","_callee3","containerId","_this2","options","imageBaseUrl","qrImageUrl","_waitForSocketId","_args3","_t3","_context3","makeRequest","qrcode","currentQRUrl","displayQRCode","pendingQRInfo","code","waitForSocketId","socketId","qrContent","typeName","qrLabel","generateCustomQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","sessionId","stack","slice","displayServiceUnavailable","generateQR","_x","_generateCustomQR","_callee4","_this3","_response","_waitForSocketId2","_args4","_t4","_context4","generateCustomQR","_x2","_x3","_generateAuthQR","_callee5","_args5","_context5","generateAuthQR","_x4","_generateKYCQR","_callee6","originalType","_args6","_context6","f","generateKYCQR","_x5","_generateSignatureQR","_callee7","_args7","_context7","generateSignatureQR","_x6","_checkQRStatus","_callee8","_response2","_t5","_context8","handleError","checkQRStatus","_x7","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","_generateCustomQRCode","_callee9","content","label","qrContainer","_response3","responseData","instructionsElement","statusElement","_args9","_t6","_context9","displayFallbackImage","size","margin","dataUrl","parentElement","querySelector","style","display","classList","add","_x8","_x9","addLogoToCenter","ctx","x","y","width","height","logo","Image","onload","logoSize","logoX","logoY","fillStyle","fillRect","drawImage","src","QRCode","String","toUpperCase","_refreshQR","_callee0","_args0","_t7","_context0","refreshQR","_x0","_this4","setInterval","_callee1","_t8","_context1","_makeRequest","_callee10","endpoint","_window$SunuIDConfig2","_window$SunuIDConfig3","_this5","sanitizedData","endpointPath","retryCount","_loop","_ret","_context11","sanitizeRequestData","endpoints","dataKeys","Object","keys","controller","timeoutId","_response4","errorText","errorData","_t9","_context10","AbortController","abort","signal","clearTimeout","text","e","statusText","responseKeys","name","Promise","resolve","d","_regeneratorValues","_x1","_x10","sanitized","_i","_Object$entries","entries","_Object$entries$_i","_typeof","generateRequestId","Math","random","toString","substr","getQRCode","destroy","clearInterval","disconnect","getSecurityLogs","clearSecurityLogs","sunuidInstance","initSunuID"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sunuid-sdk.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 2, // Type par défaut (2 = authentification)\n partnerName: 'SunuID', // Nom du partenaire par défaut\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null,\n // Nouvelles options de sécurité\n enableSecurityLogs: true,\n validateInputs: true,\n maxRetries: 3,\n requestTimeout: 10000, // 10 secondes\n // Options d'initialisation sécurisée\n secureInit: false,\n secureInitUrl: window.SunuIDConfig?.apiUrl?.replace('/api', '') + '/secure-init.php' || 'https://sunuid.fayma.sn/secure-init.php',\n token: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n // Initialisation asynchrone\n this.initPromise = this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n async init() {\n try {\n // Initialisation sécurisée si activée\n if (this.config.secureInit) {\n await this.secureInit();\n } else {\n // Validation sécurisée des paramètres\n if (this.config.validateInputs) {\n this.validateSecurityParams();\n }\n }\n\n // Log de sécurité pour l'initialisation\n this.logSecurityEvent('SDK_INIT_START', {\n apiUrl: this.config.apiUrl,\n type: this.config.type,\n partnerName: this.config.partnerName,\n secureInit: this.config.secureInit\n });\n\n // Obscurcir les credentials dans les logs\n this.obfuscateCredentials();\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n this.logSecurityEvent('SDK_INIT_SUCCESS');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n \n } catch (error) {\n this.logSecurityEvent('SDK_INIT_ERROR', { error: error.message });\n throw error;\n }\n }\n\n /**\n * Initialisation sécurisée via PHP\n */\n async secureInit() {\n try {\n this.logSecurityEvent('SECURE_INIT_START');\n \n const initData = {\n type: this.config.type,\n partnerName: this.config.partnerName,\n theme: this.config.theme\n };\n\n const response = await fetch(this.config.secureInitUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(initData)\n });\n\n if (!response.ok) {\n throw new Error(`Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n \n if (!result.success) {\n throw new Error(result.error || 'Erreur lors de l\\'initialisation sécurisée');\n }\n\n // Stocker le token et les données sécurisées\n this.config.token = result.data.token;\n this.config.apiUrl = result.data.api_url;\n \n // Décoder le token pour récupérer les credentials\n const decodedToken = this.decodeSecureToken(result.data.token);\n if (decodedToken) {\n this.config.clientId = decodedToken.client_id;\n this.config.secretId = decodedToken.secret_id;\n } else {\n throw new Error('Impossible de décoder le token sécurisé');\n }\n \n this.config.expiresIn = result.data.expires_in;\n this.config.maxRequests = result.data.max_requests;\n this.config.requestCount = 0;\n\n this.logSecurityEvent('SECURE_INIT_SUCCESS', {\n expiresIn: result.data.expires_in,\n maxRequests: result.data.max_requests\n });\n\n console.log('✅ Initialisation sécurisée réussie');\n \n } catch (error) {\n this.logSecurityEvent('SECURE_INIT_ERROR', { error: error.message });\n throw new Error(`Échec de l'initialisation sécurisée: ${error.message}`);\n }\n }\n\n /**\n * Décoder le token sécurisé\n */\n decodeSecureToken(token) {\n try {\n const parts = token.split('.');\n if (parts.length !== 2) {\n console.error('❌ Format de token invalide');\n return null;\n }\n \n const [payload, signature] = parts;\n \n // Décoder le payload (base64)\n const decodedPayload = atob(payload);\n const tokenData = JSON.parse(decodedPayload);\n \n // Vérifier l'expiration\n if (tokenData.exp && tokenData.exp < Date.now() / 1000) {\n console.error('❌ Token expiré');\n return null;\n }\n \n console.log('✅ Token décodé avec succès');\n return tokenData;\n \n } catch (error) {\n console.error('❌ Erreur décodage token:', error);\n return null;\n }\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Obtenir le nom du type à partir du numéro\n */\n getTypeName(type) {\n switch(type) {\n case 1: return 'KYC';\n case 2: return 'AUTH';\n case 3: return 'SIGNATURE';\n default: return `TYPE-${type}`;\n }\n }\n\n /**\n * Validation sécurisée des paramètres\n */\n validateSecurityParams() {\n const errors = [];\n \n // Validation du clientId\n if (!this.config.clientId || typeof this.config.clientId !== 'string') {\n errors.push('clientId invalide ou manquant');\n } else if (this.config.clientId.length < 10) {\n errors.push('clientId trop court');\n }\n \n // Validation du secretId\n if (!this.config.secretId || typeof this.config.secretId !== 'string') {\n errors.push('secretId invalide ou manquant');\n } else if (this.config.secretId.length < 32) {\n errors.push('secretId trop court (minimum 32 caractères)');\n }\n \n // Validation de l'URL API\n if (!this.config.apiUrl || !this.isValidUrl(this.config.apiUrl)) {\n errors.push('apiUrl invalide');\n }\n \n // Validation du type\n if (![1, 2, 3].includes(this.config.type)) {\n errors.push('type invalide (doit être 1, 2 ou 3)');\n }\n \n if (errors.length > 0) {\n this.logSecurityEvent('VALIDATION_ERROR', { errors });\n throw new Error(`Paramètres de sécurité invalides: ${errors.join(', ')}`);\n }\n \n this.logSecurityEvent('VALIDATION_SUCCESS');\n }\n\n /**\n * Validation d'URL sécurisée\n */\n isValidUrl(string) {\n try {\n const url = new URL(string);\n return url.protocol === 'https:' || url.protocol === 'http:';\n } catch (_) {\n return false;\n }\n }\n\n /**\n * Logs de sécurité\n */\n logSecurityEvent(event, data = {}) {\n if (!this.config.enableSecurityLogs) return;\n \n const securityLog = {\n timestamp: new Date().toISOString(),\n event: event,\n data: data,\n userAgent: navigator.userAgent,\n url: window.location.href\n };\n \n console.warn('🔒 [SECURITY]', securityLog);\n \n // Stocker les logs de sécurité (optionnel)\n if (!window.SunuIDSecurityLogs) {\n window.SunuIDSecurityLogs = [];\n }\n window.SunuIDSecurityLogs.push(securityLog);\n }\n\n /**\n * Chiffrement simple des credentials (pour éviter l'exposition en clair)\n */\n obfuscateCredentials() {\n // Stocker les vraies valeurs pour les logs de sécurité\n this.config.originalClientId = this.config.clientId;\n this.config.originalSecretId = this.config.secretId;\n \n // Créer des versions obfusquées pour l'affichage uniquement\n if (this.config.clientId) {\n this.config.clientIdDisplay = this.config.clientId.replace(/(.{3}).*(.{3})/, '$1***$2');\n }\n if (this.config.secretId) {\n this.config.secretIdDisplay = this.config.secretId.replace(/(.{4}).*(.{4})/, '$1***$2');\n }\n }\n\n /**\n * Validation des entrées utilisateur\n */\n sanitizeInput(input) {\n if (typeof input !== 'string') return input;\n \n // Protection contre les injections XSS basiques\n return input\n .replace(/[<>]/g, '') // Supprimer les balises HTML\n .replace(/javascript:/gi, '') // Supprimer les protocoles dangereux\n .trim();\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n // Attendre l'initialisation si nécessaire\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n \n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.currentQRUrl = qrImageUrl; // Stocker l'URL pour getQRCode()\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n \n // Générer le QR code personnalisé avec le type + code de l'API + socket ID\n if (this.pendingQRInfo && response.data.code) {\n // Attendre que le socket ID soit bien défini\n const waitForSocketId = () => {\n if (this.socket && this.socket.id && this.socket.id !== 'unknown') {\n const socketId = this.socket.id;\n const qrContent = `${this.config.type}-${response.data.code}-${socketId}`;\n \n // Utiliser le partnerName de la réponse API et le nom du type\n const partnerName = response.data.partnerName || this.config.partnerName || 'SunuID';\n const typeName = this.getTypeName(this.config.type);\n const qrLabel = `${typeName} - ${partnerName}`;\n \n this.generateCustomQRCode(qrContent, qrLabel, this.pendingQRInfo.options);\n this.pendingQRInfo = null; // Nettoyer\n } else {\n // Réessayer après un délai si le socket ID n'est pas encore disponible\n setTimeout(waitForSocketId, 100);\n }\n };\n \n waitForSocketId();\n }\n \n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n code: response.data.code,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.error('Stack trace complet:', error.stack);\n console.error('Configuration SDK:', {\n apiUrl: this.config.apiUrl,\n type: this.config.type,\n secureInit: this.config.secureInit,\n clientId: this.config.clientId ? '***' + this.config.clientId.slice(-4) : 'null',\n secretId: this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null'\n });\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n // Attendre l'initialisation si nécessaire\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n \n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n \n // Générer le QR code personnalisé avec le type + code de l'API + socket ID\n if (this.pendingQRInfo && response.data.code) {\n // Attendre que le socket ID soit bien défini\n const waitForSocketId = () => {\n if (this.socket && this.socket.id && this.socket.id !== 'unknown') {\n const socketId = this.socket.id;\n const qrContent = `${type}-${response.data.code}-${socketId}`;\n \n // Utiliser le partnerName de la réponse API et le nom du type\n const partnerName = response.data.partnerName || this.config.partnerName || 'SunuID';\n const typeName = this.getTypeName(type);\n const qrLabel = `${typeName} - ${partnerName}`;\n \n this.generateCustomQRCode(qrContent, qrLabel, this.pendingQRInfo.options);\n this.pendingQRInfo = null; // Nettoyer\n } else {\n // Réessayer après un délai si le socket ID n'est pas encore disponible\n setTimeout(waitForSocketId, 100);\n }\n };\n \n waitForSocketId();\n }\n \n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.error('Stack trace complet:', error.stack);\n console.error('Configuration SDK (Custom):', {\n apiUrl: this.config.apiUrl,\n type: type,\n secureInit: this.config.secureInit,\n clientId: this.config.clientId ? '***' + this.config.clientId.slice(-4) : 'null',\n secretId: this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null'\n });\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 1;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n async generateSignatureQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour Signature\n this.config.type = 3;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n \n // Afficher un loader en attendant la réponse API et la connexion socket\n const typeName = this.getTypeName(type);\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Vérification KYC' : type === 2 ? 'Authentification' : type === 3 ? 'Signature' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\" id=\"sunuid-qr-container\">\n <div style=\"text-align: center; padding: 40px;\">\n <div class=\"sunuid-loader\">\n <div class=\"sunuid-spinner\"></div>\n <p style=\"margin-top: 20px; color: #666;\">Initialisation en cours...</p>\n <p style=\"font-size: 12px; color: #999; margin-top: 10px;\">Connexion API et WebSocket</p>\n <p style=\"font-size: 11px; color: #ccc; margin-top: 5px;\">Attente du Socket ID...</p>\n </div>\n </div>\n </div>\n <div class=\"sunuid-qr-instructions\" style=\"display: none;\">\n <p>Scannez ce QR code avec l'application ${this.config.partnerName} pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\" style=\"display: none;\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Stocker les informations pour la génération ultérieure\n this.pendingQRInfo = {\n containerId,\n type,\n options\n };\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Générer un QR code personnalisé avec PHP Endroid\n */\n async generateCustomQRCode(content, label, options = {}) {\n try {\n console.log('🎨 Début génération QR personnalisé avec PHP...');\n console.log('📄 Contenu:', content);\n console.log('🏷️ Label:', label);\n \n const qrContainer = document.getElementById('sunuid-qr-container');\n if (!qrContainer) {\n console.error('❌ QR container not found');\n this.displayFallbackImage();\n return;\n }\n \n console.log('✅ QR container trouvé');\n\n // Nettoyer le conteneur\n qrContainer.innerHTML = '<div style=\"text-align: center; padding: 20px;\"><p>Génération QR code avec PHP...</p></div>';\n\n // Appeler l'endpoint PHP\n console.log('🔄 Appel endpoint PHP...');\n const qrGeneratorUrl = this.config.apiUrl.replace('/api', '') + '/qr-generator.php';\n const response = await fetch(qrGeneratorUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n content: content,\n label: label,\n size: 300,\n margin: 10\n })\n });\n \n console.log('📥 Réponse PHP reçue - Status:', response.status);\n \n if (!response.ok) {\n throw new Error(`Erreur HTTP: ${response.status}`);\n }\n \n const responseData = await response.json();\n \n if (!responseData.success) {\n throw new Error(`Erreur PHP: ${responseData.error}`);\n }\n \n console.log('✅ QR code généré par PHP avec succès');\n console.log('📊 Taille:', responseData.data.size + 'px');\n console.log('📊 Longueur base64:', responseData.data.length + ' caractères');\n\n // Stocker l'URL du QR code pour getQRCode()\n this.currentQRUrl = responseData.data.dataUrl;\n \n // Créer le conteneur avec le QR code PHP\n qrContainer.innerHTML = `\n <div class=\"sunuid-qr-ready\" style=\"text-align: center; padding: 20px;\">\n <img src=\"${responseData.data.dataUrl}\" alt=\"QR Code ${this.config.partnerName}\" style=\"max-width: 300px; border: 2px solid #ddd; border-radius: 10px;\">\n </div>\n `;\n \n // Afficher les instructions et le statut maintenant que le QR est prêt\n const instructionsElement = qrContainer.parentElement.querySelector('.sunuid-qr-instructions');\n const statusElement = qrContainer.parentElement.querySelector('.sunuid-qr-status');\n \n if (instructionsElement) {\n instructionsElement.style.display = 'block';\n instructionsElement.classList.add('sunuid-qr-ready');\n }\n if (statusElement) {\n statusElement.style.display = 'block';\n statusElement.classList.add('sunuid-qr-ready');\n }\n \n console.log('✅ QR code PHP affiché dans le conteneur');\n\n } catch (error) {\n console.error('❌ Erreur génération QR PHP:', error);\n console.error('Stack trace:', error.stack);\n this.displayFallbackImage();\n }\n }\n\n /**\n * Ajouter le logo au centre du QR code\n */\n addLogoToCenter(ctx, x, y, width, height) {\n try {\n // Créer une image pour le logo\n const logo = new Image();\n logo.onload = () => {\n const logoSize = 40;\n const logoX = x + (width - logoSize) / 2;\n const logoY = y + (width - logoSize) / 2;\n\n // Dessiner un fond blanc pour le logo\n ctx.fillStyle = 'white';\n ctx.fillRect(logoX - 2, logoY - 2, logoSize + 4, logoSize + 4);\n\n // Dessiner le logo\n ctx.drawImage(logo, logoX, logoY, logoSize, logoSize);\n };\n logo.src = 'src/logoqr.png';\n } catch (error) {\n console.warn('Logo non disponible:', error);\n }\n }\n\n /**\n * Afficher l'image de fallback\n */\n displayFallbackImage() {\n console.log('⚠️ Affichage de l\\'image de fallback');\n const qrContainer = document.getElementById('sunuid-qr-container');\n if (qrContainer) {\n qrContainer.innerHTML = `\n <div style=\"text-align: center; padding: 20px; color: #666;\">\n <p>⚠️ Génération QR personnalisé non disponible</p>\n <p>Utilisation de l'image par défaut</p>\n <p><strong>Debug:</strong> QRCode disponible: ${typeof QRCode !== 'undefined'}</p>\n <p><strong>Debug:</strong> Container trouvé: ${qrContainer !== null}</p>\n </div>\n `;\n } else {\n console.error('❌ Container QR non trouvé pour fallback');\n }\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${String(type).toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API sécurisée\n */\n async makeRequest(endpoint, data) {\n // Validation de sécurité\n if (!this.isInitialized) {\n this.logSecurityEvent('REQUEST_BEFORE_INIT', { endpoint });\n throw new Error('SDK non initialisé');\n }\n\n // Vérifier les limites de requêtes pour l'initialisation sécurisée\n if (this.config.secureInit) {\n this.config.requestCount++;\n if (this.config.requestCount > this.config.maxRequests) {\n this.logSecurityEvent('API_REQUEST_LIMIT_EXCEEDED', { \n requestCount: this.config.requestCount,\n maxRequests: this.config.maxRequests \n });\n throw new Error('Limite de requêtes dépassée');\n }\n }\n\n // Sanitisation des données\n const sanitizedData = this.sanitizeRequestData(data);\n \n // Debug: Afficher les données envoyées\n console.log('🔍 Debug makeRequest - endpoint:', endpoint);\n console.log('🔍 Debug makeRequest - apiUrl:', this.config.apiUrl);\n console.log('🔍 Debug makeRequest - url:', `${this.config.apiUrl}${endpoint}`);\n console.log('🔍 Debug makeRequest - data:', JSON.stringify(sanitizedData, null, 2));\n console.log('🔍 Debug makeRequest - secureInit:', this.config.secureInit);\n console.log('🔍 Debug makeRequest - isInitialized:', this.isInitialized);\n \n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Debug: Afficher l'URL finale\n console.log('🔍 URL finale construite:', url);\n console.log('🔍 EndpointPath:', endpointPath);\n console.log('🔍 SunuIDConfig endpoints:', JSON.stringify(window.SunuIDConfig?.endpoints));\n \n // Log de sécurité pour la requête\n this.logSecurityEvent('API_REQUEST_START', {\n endpoint: endpointPath,\n url: url,\n dataKeys: Object.keys(sanitizedData),\n secureInit: this.config.secureInit\n });\n \n let retryCount = 0;\n const maxRetries = this.config.maxRetries;\n \n while (retryCount <= maxRetries) {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.requestTimeout);\n \n // Headers minimaux (API SunuID n'accepte que les headers essentiels)\n const headers = {\n 'Content-Type': 'application/json'\n };\n\n // Note: En mode sécurisé, les credentials sont dans le body\n // Pas besoin d'ajouter de header spécial pour éviter les problèmes CORS\n // if (this.config.secureInit && this.config.token) {\n // headers['X-Secure-Token'] = this.config.token;\n // }\n \n const response = await fetch(url, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(sanitizedData),\n signal: controller.signal\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n this.logSecurityEvent('API_REQUEST_ERROR', {\n status: response.status,\n statusText: response.statusText,\n error: errorData.message\n });\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n \n this.logSecurityEvent('API_REQUEST_SUCCESS', {\n endpoint: endpointPath,\n responseKeys: Object.keys(result)\n });\n \n return result;\n \n } catch (error) {\n retryCount++;\n \n if (error.name === 'AbortError') {\n this.logSecurityEvent('API_REQUEST_TIMEOUT', { retryCount });\n if (retryCount > maxRetries) {\n throw new Error('Timeout de la requête API');\n }\n continue;\n }\n \n if (retryCount > maxRetries) {\n this.logSecurityEvent('API_REQUEST_MAX_RETRIES', { \n retryCount, \n error: error.message \n });\n throw error;\n }\n \n // Attendre avant de réessayer\n await new Promise(resolve => setTimeout(resolve, 1000 * retryCount));\n }\n }\n }\n\n /**\n * Sanitisation des données de requête\n */\n sanitizeRequestData(data) {\n const sanitized = {};\n \n for (const [key, value] of Object.entries(data)) {\n if (typeof value === 'string') {\n sanitized[key] = this.sanitizeInput(value);\n } else if (typeof value === 'object' && value !== null) {\n sanitized[key] = this.sanitizeRequestData(value);\n } else {\n sanitized[key] = value;\n }\n }\n \n // Ajouter les credentials dans le body (API SunuID les attend ici)\n // Utiliser les vraies valeurs (originales) si disponibles, sinon les valeurs directes\n sanitized.client_id = this.config.originalClientId || this.config.clientId;\n sanitized.secret_id = this.config.originalSecretId || this.config.secretId;\n \n // Debug: Vérifier les credentials\n console.log('🔍 Credentials dans sanitizeRequestData - clientId:', this.config.clientId);\n console.log('🔍 Credentials dans sanitizeRequestData - secretId:', this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedClientId:', sanitized.client_id);\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedSecretId:', sanitized.secret_id ? '***' + sanitized.secret_id.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - data complet:', JSON.stringify(sanitized, null, 2));\n \n // Debug: Vérifier les credentials\n console.log('🔍 Credentials dans sanitizeRequestData - clientId:', this.config.clientId);\n console.log('🔍 Credentials dans sanitizeRequestData - secretId:', this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedClientId:', sanitized.client_id);\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedSecretId:', sanitized.secret_id ? '***' + sanitized.secret_id.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - data complet:', JSON.stringify(sanitized, null, 2));\n \n return sanitized;\n }\n\n /**\n * Générer un ID de requête unique\n */\n generateRequestId() {\n return 'req_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Obtenir l'URL du QR code généré\n */\n getQRCode() {\n // Retourner l'URL du QR code si disponible\n if (this.currentQRUrl) {\n return this.currentQRUrl;\n }\n \n // Sinon, retourner une URL par défaut ou null\n return null;\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n this.logSecurityEvent('SDK_DESTROY');\n console.log('SunuID SDK détruit');\n }\n\n /**\n * Obtenir les logs de sécurité\n */\n getSecurityLogs() {\n return window.SunuIDSecurityLogs || [];\n }\n\n /**\n * Nettoyer les logs de sécurité\n */\n clearSecurityLogs() {\n window.SunuIDSecurityLogs = [];\n this.logSecurityEvent('SECURITY_LOGS_CLEARED');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","_window$SunuIDConfig2","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","partnerName","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","enableSecurityLogs","validateInputs","maxRetries","requestTimeout","secureInit","secureInitUrl","replace","token","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","initPromise","init","_createClass","key","value","_init","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","validateSecurityParams","logSecurityEvent","obfuscateCredentials","console","log","initWebSocket","v","error","message","a","apply","_secureInit","_callee2","initData","response","result","decodedToken","_t2","_context2","fetch","method","headers","body","JSON","stringify","ok","Error","concat","status","json","success","data","api_url","decodeSecureToken","client_id","secret_id","expiresIn","expires_in","maxRequests","max_requests","requestCount","parts","split","_parts","_slicedToArray","payload","signature","decodedPayload","atob","tokenData","parse","exp","Date","now","_this","io","warn","setTimeout","ip","getClientIP","query","userId","username","on","id","reason","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","getTypeName","errors","push","isValidUrl","includes","join","string","url","URL","protocol","_","event","securityLog","timestamp","toISOString","userAgent","navigator","location","href","SunuIDSecurityLogs","originalClientId","originalSecretId","clientIdDisplay","secretIdDisplay","sanitizeInput","input","trim","emitWebSocketEvent","connected","emit","getWebSocketStatus","forceWebSocketInit","_generateQR","_callee3","containerId","_this2","options","imageBaseUrl","qrImageUrl","_waitForSocketId","_args3","_t3","_context3","makeRequest","qrcode","currentQRUrl","displayQRCode","pendingQRInfo","code","waitForSocketId","socketId","qrContent","typeName","qrLabel","generateCustomQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","sessionId","stack","slice","displayServiceUnavailable","generateQR","_x","_generateCustomQR","_callee4","_this3","_response","_waitForSocketId2","_args4","_t4","_context4","generateCustomQR","_x2","_x3","_generateAuthQR","_callee5","_args5","_context5","generateAuthQR","_x4","_generateKYCQR","_callee6","originalType","_args6","_context6","f","generateKYCQR","_x5","_generateSignatureQR","_callee7","_args7","_context7","generateSignatureQR","_x6","_checkQRStatus","_callee8","_response2","_t5","_context8","handleError","checkQRStatus","_x7","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","_generateCustomQRCode","_callee9","content","label","qrContainer","qrGeneratorUrl","_response3","responseData","instructionsElement","statusElement","_args9","_t6","_context9","displayFallbackImage","size","margin","dataUrl","parentElement","querySelector","style","display","classList","add","_x8","_x9","addLogoToCenter","ctx","x","y","width","height","logo","Image","onload","logoSize","logoX","logoY","fillStyle","fillRect","drawImage","src","QRCode","String","toUpperCase","_refreshQR","_callee0","_args0","_t7","_context0","refreshQR","_x0","_this4","setInterval","_callee1","_t8","_context1","_makeRequest","_callee10","endpoint","_window$SunuIDConfig3","_window$SunuIDConfig4","_this5","sanitizedData","endpointPath","retryCount","_loop","_ret","_context11","sanitizeRequestData","endpoints","dataKeys","Object","keys","controller","timeoutId","_response4","errorText","errorData","_t9","_context10","AbortController","abort","signal","clearTimeout","text","e","statusText","responseKeys","name","Promise","resolve","d","_regeneratorValues","_x1","_x10","sanitized","_i","_Object$entries","entries","_Object$entries$_i","_typeof","generateRequestId","Math","random","toString","substr","getQRCode","destroy","clearInterval","disconnect","getSecurityLogs","clearSecurityLogs","sunuidInstance","initSunuID"],"mappings":"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"}
|