import os import bcrypt from cryptography.fernet import Fernet from modules.logger import log_event # 1. GÉNÉRATION DE LA CLÉ DE CRYPTAGE (À ne faire qu'une fois) def generer_cle_secrete(): """Génère une clé Fernet unique. À sauvegarder dans le .env""" cle = Fernet.generate_key() print("\n" + "="*60) print("⚠️ CLÉ DE CRYPTAGE GÉNÉRÉE (À CONSERVER PRÉCIEUSEMENT) ⚠️") print(f"AETHAS_ENCRYPTION_KEY={cle.decode('utf-8')}") print("Copiez cette ligne dans votre fichier .env") print("="*60 + "\n") return cle def obtenir_fernet(): cle = os.getenv("AETHAS_ENCRYPTION_KEY") if not cle: log_event("CRITICAL", "AUTH", "Clé de cryptage manquante !") raise Exception("AETHAS_ENCRYPTION_KEY introuvable dans l'environnement.") return Fernet(cle.encode('utf-8')) # 2. CRYPTAGE DES DONNÉES SENSIBLES (Clés API des utilisateurs, CB, etc.) def crypter_donnee(donnee_claire): f = obtenir_fernet() return f.encrypt(donnee_claire.encode('utf-8')).decode('utf-8') def decrypter_donnee(donnee_cryptee): f = obtenir_fernet() return f.decrypt(donnee_cryptee.encode('utf-8')).decode('utf-8') # 3. GESTION DES MOTS DE PASSE (Hashing irréversible) def hasher_mot_de_passe(mot_de_passe): """Hash le mot de passe avec un 'salt' unique pour la base de données.""" return bcrypt.hashpw(mot_de_passe.encode('utf-8'), bcrypt.gensalt()).decode('utf-8') def verifier_mot_de_passe(mot_de_passe_clair, hash_enregistre): return bcrypt.checkpw(mot_de_passe_clair.encode('utf-8'), hash_enregistre.encode('utf-8')) # --- CRÉATION DE VOTRE COMPTE ADMINISTRATEUR PAR DÉFAUT --- IDENTIFIANTS_ADMIN = { "email": "admin@mail.aethas38.duckdns.org", # Mot de passe par défaut : Xavier2026! (Il est hashé ici pour la sécurité du code) "mot_de_passe_hash": "$2b$12$R.K19pS8M5/xVd2o.3nSZeZ8GzH6J9gR/vY9x6g3Zp2vJq4vX2J0e", "role": "Dieu tout puissant" }