From 6f9baf6f5635ff301bb043824254b59c20d42f7f Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 29 Oct 2025 12:35:08 +0100 Subject: [PATCH] fix: improve prerequisites verification with automatic redirection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Motivations :** - Chaque page doit vérifier ses prérequis et rediriger automatiquement si nécessaire - Erreur avec SecureCredentialsService: 'is not a constructor' - Amélioration de l'ordre de vérification des prérequis (PBKDF2 key d'abord, puis wallet) - Redirection automatique vers la page appropriée si les prérequis ne sont pas remplis **Modifications :** - Correction de l'utilisation de SecureCredentialsService: utilisation de getInstance() au lieu de new - Amélioration de la vérification des prérequis dans birthday-setup.ts avec redirection automatique - Vérification du PBKDF2 key en premier (prérequis le plus basique) - Redirection vers security-setup si le PBKDF2 key n'est pas trouvé - Redirection vers wallet-setup si le wallet n'est pas trouvé - Amélioration de wallet-setup.ts pour rediriger vers security-setup si aucune clé PBKDF2 n'est trouvée **Pages affectées :** - src/pages/birthday-setup/birthday-setup.ts (vérification des prérequis améliorée) - src/pages/wallet-setup/wallet-setup.ts (redirection vers security-setup) --- src/pages/birthday-setup/birthday-setup.ts | 32 ++++++++++++++-------- src/pages/wallet-setup/wallet-setup.ts | 12 ++++---- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/pages/birthday-setup/birthday-setup.ts b/src/pages/birthday-setup/birthday-setup.ts index f328615..8cd99f4 100644 --- a/src/pages/birthday-setup/birthday-setup.ts +++ b/src/pages/birthday-setup/birthday-setup.ts @@ -36,16 +36,9 @@ document.addEventListener('DOMContentLoaded', async () => { updateStatus('🔍 Vérification des prérequis...', 'loading'); updateProgress(20); - // Vérifier que le wallet existe en base - const wallet = await services.getDeviceFromDatabase(); - if (!wallet) { - throw new Error('Wallet not found in database. Please complete wallet setup first.'); - } - console.log('✅ Wallet found in database'); - - // Vérifier que le PBKDF2 key existe - const { default: SecureCredentialsService } = await import('../../services/secure-credentials.service'); - const secureCredentials = new SecureCredentialsService(); + // Vérifier que le PBKDF2 key existe d'abord (prérequis le plus basique) + const { SecureCredentialsService } = await import('../../services/secure-credentials.service'); + const secureCredentials = SecureCredentialsService.getInstance(); let pbkdf2KeyFound = false; const securityModes = ['none', 'password', 'os', 'proton-pass']; @@ -63,8 +56,25 @@ document.addEventListener('DOMContentLoaded', async () => { } if (!pbkdf2KeyFound) { - throw new Error('PBKDF2 key not found. Please complete security setup first.'); + console.log('⚠️ PBKDF2 key not found, redirecting to security-setup...'); + updateStatus('⚠️ Redirection vers la configuration de sécurité...', 'loading'); + setTimeout(() => { + window.location.href = '/src/pages/security-setup/security-setup.html'; + }, 1000); + return; } + + // Vérifier que le wallet existe en base + const wallet = await services.getDeviceFromDatabase(); + if (!wallet) { + console.log('⚠️ Wallet not found, redirecting to wallet-setup...'); + updateStatus('⚠️ Redirection vers la configuration du wallet...', 'loading'); + setTimeout(() => { + window.location.href = '/src/pages/wallet-setup/wallet-setup.html'; + }, 1000); + return; + } + console.log('✅ Wallet found in database'); console.log('✅ All prerequisites verified'); // Connexion aux relais diff --git a/src/pages/wallet-setup/wallet-setup.ts b/src/pages/wallet-setup/wallet-setup.ts index 2f16082..a2267bf 100644 --- a/src/pages/wallet-setup/wallet-setup.ts +++ b/src/pages/wallet-setup/wallet-setup.ts @@ -173,12 +173,14 @@ document.addEventListener('DOMContentLoaded', async () => { } } - // CRITICAL: Si aucune clé PBKDF2 n'est disponible, arrêter immédiatement + // CRITICAL: Si aucune clé PBKDF2 n'est disponible, rediriger vers security-setup if (!currentMode) { - console.error('❌ CRITICAL: No PBKDF2 key found for any security mode.'); - console.error('❌ Cannot proceed with wallet creation without encryption key.'); - updateStatus('❌ Erreur: Aucune clé de chiffrement trouvée. Veuillez configurer la sécurité.', 'error'); - throw new Error('CRITICAL: No PBKDF2 key found. Cannot create wallet without encryption key.'); + console.log('⚠️ No PBKDF2 key found, redirecting to security-setup...'); + updateStatus('⚠️ Redirection vers la configuration de sécurité...', 'loading'); + setTimeout(() => { + window.location.href = '/src/pages/security-setup/security-setup.html'; + }, 1000); + return; } console.log('🔐 Using security mode for wallet encryption:', currentMode);