fix: improve prerequisites verification with automatic redirection

**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)
This commit is contained in:
NicolasCantu 2025-10-29 12:35:08 +01:00
parent bb5f70a48f
commit 6f9baf6f56
2 changed files with 28 additions and 16 deletions

View File

@ -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

View File

@ -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);