From 310051fb4d415e454eaf9a8ff946ae4da2a81305 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Sat, 14 Jun 2025 17:09:25 +0000
Subject: [PATCH] =?UTF-8?q?Refactor:=20V=C3=A9rification=20des=20routes=20?=
=?UTF-8?q?et=20suppression=20des=20fichiers=20.bak?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Ce commit inclut les actions suivantes :
- Vérification de la syntaxe des définitions de routes dans app/public/index.php. Aucune correction n'a été nécessaire car la potentielle erreur 'AuthController@@logout' était déjà corrigée.
- Suppression des fichiers .bak obsolètes :
- app/public/index.php.bak
- app/public/ocsp_responder.php.bak
- app/src/Services/LanguageService.php.bak
Ces changements contribuent à la propreté et à la maintenabilité du code.
---
app/public/index.php.bak | 162 -----------------------
app/public/ocsp_responder.php.bak | 47 -------
app/src/Services/LanguageService.php.bak | 117 ----------------
3 files changed, 326 deletions(-)
delete mode 100644 app/public/index.php.bak
delete mode 100644 app/public/ocsp_responder.php.bak
delete mode 100644 app/src/Services/LanguageService.php.bak
diff --git a/app/public/index.php.bak b/app/public/index.php.bak
deleted file mode 100644
index e89fe8f..0000000
--- a/app/public/index.php.bak
+++ /dev/null
@@ -1,162 +0,0 @@
-getMessage());
- die("Une erreur est survenue lors de la connexion à la base de données. Veuillez réessayer plus tard.");
-}
-
-// Initialisation des services principaux
-$dbInstance = Database::getInstance(); // Récupère l'instance PDO
-$authService = new AuthService($dbInstance);
-$logService = new LogService(APP_LOG_PATH);
-$langService = new LanguageService(APP_ROOT_DIR . '/src/Lang/');
-
-// ----------------------------------------------------
-// Gestion de la Langue et du Mode Sombre via URL ou Session
-// ----------------------------------------------------
-
-// Traitement du changement de langue
-if (isset($_GET['lang'])) {
- $langService->setLanguage($_GET['lang']);
- // Redirige pour nettoyer le paramètre GET de l'URL
- header('Location: ' . strtok($_SERVER['REQUEST_URI'], '?'));
- exit();
-}
-$currentLang = $langService->getLanguage();
-$translations = $langService->getTranslations(); // Charge les traductions pour la langue actuelle
-
-// Traitement du mode sombre
-DarkMode::init(); // Initialise le mode sombre si ce n'est pas déjà fait
-if (isset($_GET['dark_mode'])) {
- DarkMode::toggle($_GET['dark_mode']);
- // Redirige pour nettoyer le paramètre GET de l'URL
- header('Location: ' . strtok($_SERVER['REQUEST_URI'], '?'));
- exit();
-}
-
-// ----------------------------------------------------
-// Log de chaque requête entrante (pour le débogage/audit)
-// ----------------------------------------------------
-$logService->log('info', 'Requête reçue: ' . $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'], $authService->getUserId(), $_SERVER['REMOTE_ADDR']);
-
-
-// ----------------------------------------------------
-// Processus d'initialisation de l'application au premier lancement
-// Crée le Root CA et le premier compte administrateur si non existants.
-// ----------------------------------------------------
-
-$stmt = $dbInstance->query("SELECT COUNT(*) FROM users");
-$userCount = $stmt->fetchColumn();
-
-// Vérifier l'existence du certificat root
-$rootCertExists = file_exists(ROOT_CA_PATH . '/certs/ca.cert.pem');
-
-if ($userCount === 0 || !$rootCertExists) {
- // Afficher une page d'initialisation ou un message d'attente
- echo "
Initialisation de l'Application
";
- echo "
Ceci est le premier lancement. Nous allons configurer la base de données, créer le certificat Root CA et le premier compte administrateur.
";
-
- // Création du certificat Root CA si non existant
- if (!$rootCertExists) {
- echo "
Création du certificat Root CA en cours...
";
- $logService->log('info', 'Lancement de la création du certificat Root CA.', null, $_SERVER['REMOTE_ADDR']);
- // Exécution du script shell de création de certificat root
- $command = escapeshellcmd(SCRIPTS_PATH . '/create_root_cert.sh'); // Utilise la constante
- $output = shell_exec($command . ' 2>&1');
- $logService->log('info', "Résultat création Root CA: " . $output, null, $_SERVER['REMOTE_ADDR']);
-
- if (file_exists(ROOT_CA_PATH . '/certs/ca.cert.pem')) {
- echo "
Certificat Root CA créé avec succès.
";
- // Extraire la date d'expiration du certificat créé pour l'enregistrer en BDD
- $certInfo = shell_exec("openssl x509 -in " . escapeshellarg(ROOT_CA_PATH . '/certs/ca.cert.pem') . " -noout -enddate 2>/dev/null | cut -d= -f2");
- $expirationTimestamp = strtotime($certInfo);
- $expirationDate = $expirationTimestamp ? date('Y-m-d H:i:s', $expirationTimestamp) : (new DateTime('+10 years'))->format('Y-m-d H:i:s');
-
- // Enregistrer le certificat root dans la base de données
- $stmt = $dbInstance->prepare("INSERT INTO certificates (name, type, expiration_date) VALUES (?, ?, ?)");
- $stmt->execute(['ca.cert.pem', 'root', $expirationDate]);
- } else {
- echo "
Erreur lors de la création du certificat Root CA. Veuillez vérifier les logs PHP et Docker.
";
- echo "
" . htmlspecialchars($output) . "
";
- // Arrête l'exécution pour que l'utilisateur puisse voir l'erreur
- exit();
- }
- }
-
- // Création du premier compte administrateur si non existant
- if ($userCount === 0) {
- echo "
Création du premier compte administrateur...
";
- $adminUsername = 'admin';
- $adminPasswordPlain = 'adminpass'; // Mot de passe par défaut très faible, À CHANGER IMMÉDIATEMENT EN PRODUCTION !
- $adminPasswordHashed = password_hash($adminPasswordPlain, PASSWORD_DEFAULT);
-
- $stmt = $dbInstance->prepare("INSERT INTO users (username, password, role) VALUES (?, ?, ?)");
- $stmt->execute([$adminUsername, $adminPasswordHashed, 'admin']);
- $logService->log('info', "Compte administrateur '$adminUsername' créé.", $stmt->lastInsertId(), $_SERVER['REMOTE_ADDR']);
- echo "
Compte administrateur 'admin' créé avec succès. Mot de passe initial: {$adminPasswordPlain} (veuillez le changer après la première connexion !)
";
- }
-
- echo "
Initialisation terminée. Redirection vers la page de connexion dans 5 secondes...
";
- echo "
";
- // Redirection automatique après l'initialisation
- header('Refresh: 5; URL=/login');
- exit();
-}
-// ----------------------------------------------------
-// Fin du processus d'initialisation
-// ----------------------------------------------------
-
-
-// ----------------------------------------------------
-// Configuration du routeur de l'application
-// ----------------------------------------------------
-$router = new Router();
-
-// Routes publiques (accessibles sans authentification)
-$router->addRoute('GET', '/', 'HomeController@index');
-$router->addRoute('GET', '/login', 'AuthController@showLoginForm');
-$router->addRoute('POST', '/login', 'AuthController@login');
-
-// Routes protégées (nécessitent une authentification)
-// Le dernier paramètre 'true' indique que la route nécessite une authentification
-$router->addRoute('GET', '/dashboard', 'DashboardController@index', true);
-$router->addRoute('GET', '/certificates', 'CertificateController@index', true);
-$router->addRoute('GET', '/certificates/create', 'CertificateController@showCreateForm', true);
-$router->addRoute('POST', '/certificates/create', 'CertificateController@create', true);
-$router->addRoute('POST', '/certificates/revoke', 'CertificateController@revoke', true);
-$router->addRoute('GET', '/perimeters', 'PerimeterController@index', true);
-$router->addRoute('GET', '/perimeters/create', 'PerimeterController@showCreateForm', true);
-$router->addRoute('POST', '/perimeters/create', 'PerimeterController@create', true);
-$router->addRoute('GET', '/users', 'UserController@index', true);
-$router->addRoute('GET', '/users/create', 'UserController@showCreateForm', true);
-$router->addRoute('POST', '/users/create', 'UserController@create', true);
-$router->addRoute('POST', '/users/delete', 'UserController@delete', true);
-$router->addRoute('GET', '/logout', 'AuthController@logout', true); # CORRIGÉ: de AuthController@@logout à AuthController@logout
-
-// Exécuter le routage
-$router->dispatch();
diff --git a/app/public/ocsp_responder.php.bak b/app/public/ocsp_responder.php.bak
deleted file mode 100644
index 5ad3363..0000000
--- a/app/public/ocsp_responder.php.bak
+++ /dev/null
@@ -1,47 +0,0 @@
-getMessage());
- http_response_code(500);
- die("OCSP service temporarily unavailable.");
-}
-
-$dbInstance = Database::getInstance();
-$authService = new AuthService($dbInstance); // Peut être utilisé pour logguer des requêtes OCSP anonymes
-$logService = new LogService(APP_LOG_PATH);
-
-
-// La logique OCSP réelle serait plus complexe.
-// Ce script attendrait une requête POST OCSP (application/ocsp-request)
-// et appellerait le contrôleur OCSP pour la traiter.
-
-// Pour un POC, nous allons simplement appeler la méthode du contrôleur dédiée.
-// En production, Nginx redirigerait une requête HTTP POST spécifique vers ce script.
-// Le client OCSP enverrait une requête binaire.
-// Pour l'instant, ce script est juste un point d'entrée.
-
-$controller = new OcspController();
-$controller->handleRequest();
-
-// Log la requête OCSP
-$logService->log('info', 'Requête OCSP reçue.', null, $_SERVER['REMOTE_ADDR']);
diff --git a/app/src/Services/LanguageService.php.bak b/app/src/Services/LanguageService.php.bak
deleted file mode 100644
index 337b4ec..0000000
--- a/app/src/Services/LanguageService.php.bak
+++ /dev/null
@@ -1,117 +0,0 @@
-langDir = rtrim($langDir, '/') . '/'; // Assure qu'il y a un slash final
- // Récupère la langue de la session ou utilise 'en' par défaut
- $this->currentLang = $_SESSION['lang'] ?? 'en';
- // Vérifie si la langue est supportée, sinon revient à 'en'
- if (!in_array($this->currentLang, SUPPORTED_LANGUAGES)) {
- $this->currentLang = 'en';
- }
- }
-
- /**
- * Définit la langue de l'application.
- *
- * @param string $lang Le code de la langue (ex: 'fr', 'en').
- * @return bool Vrai si la langue a été définie avec succès, faux sinon.
- */
- public function setLanguage($lang)
- {
- if (in_array($lang, SUPPORTED_LANGUAGES)) {
- $_SESSION['lang'] = $lang;
- $this->currentLang = $lang;
- return true;
- }
- return false;
- }
-
- /**
- * Retourne la langue actuellement sélectionnée.
- *
- * @return string Le code de la langue.
- */
- public function getLanguage()
- {
- return $this->currentLang;
- }
-
- /**
- * Charge et retourne toutes les traductions pour la langue actuelle.
- *
- * @return array Tableau associatif des traductions.
- */
- public function getTranslations()
- {
- $filePath = $this->langDir . $this->currentLang . '.json';
- if (file_exists($filePath)) {
- $content = file_get_contents($filePath);
- if ($content === false) {
- error_log("LanguageService: Impossible de lire le fichier de traduction: " . $filePath);
- return [];
- }
- $translations = json_decode($content, true);
- if (json_last_error() !== JSON_ERROR_NONE) {
- error_log("LanguageService: Erreur de décodage JSON pour le fichier: " . $filePath . " - " . json_last_error_msg());
- return [];
- }
- return $translations;
- }
- // Fallback à l'anglais si le fichier de la langue actuelle est manquant
- $englishFilePath = $this->langDir . 'en.json';
- if (file_exists($englishFilePath)) {
- $content = file_get_contents($englishFilePath);
- if ($content === false) {
- error_log("LanguageService: Impossible de lire le fichier de traduction anglais de secours: " . $englishFilePath);
- return [];
- }
- $translations = json_decode($content, true);
- if (json_last_error() !== JSON_ERROR_NONE) {
- error_log("LanguageService: Erreur de décodage JSON pour le fichier anglais de secours: " . $englishFilePath . " - " . json_last_error_msg());
- return [];
- }
- return $translations;
- }
- error_log("LanguageService: Aucun fichier de traduction trouvé pour la langue '" . $this->currentLang . "' ou 'en'.");
- return []; // Retourne un tableau vide si aucune traduction n'est trouvée
- }
-
- /**
- * Traduit une clé donnée.
- *
- * @param string $key La clé de traduction.
- * @param array $replacements Tableau associatif de [placeholder => valeur] pour les remplacements.
- * @return string La chaîne traduite ou la clé si non trouvée.
- */
- public function __($key, $replacements = [])
- {
- // Utilise la variable globale $translations qui est chargée dans index.php
- global $translations;
-
- $translatedString = $translations[$key] ?? $key;
-
- // Effectuer les remplacements de placeholders
- foreach ($replacements as $placeholder => $value) {
- $translatedString = str_replace("{" . $placeholder . "}", $value, $translatedString);
- }
-
- return $translatedString;
- }
-}