From ac78568e1c1a91564eb6bd35c03d9a8a781bc53d Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 19 May 2026 00:19:23 +0200 Subject: =?UTF-8?q?lanc=C3=A9s=20et=20captures=20d'exceptions=20page=20mai?= =?UTF-8?q?ntenance,=20page=20menu=20et=20chemins:=20interdiction=20pour?= =?UTF-8?q?=20une=20page=20d'avoir=20pour=20parent=20une=20adresse=20d'un?= =?UTF-8?q?=20site,=20regression=20contructeur=20de=20MenuBuilder,=20MAJ?= =?UTF-8?q?=20de=20paquets=20dans=20composer.json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/MaintenanceController.php | 6 ++---- src/controller/MenuAndPathsController.php | 8 +++++++- src/controller/UserController.php | 8 +++++++- 3 files changed, 16 insertions(+), 6 deletions(-) (limited to 'src/controller') diff --git a/src/controller/MaintenanceController.php b/src/controller/MaintenanceController.php index f3352d8..3b58fe6 100644 --- a/src/controller/MaintenanceController.php +++ b/src/controller/MaintenanceController.php @@ -5,7 +5,6 @@ declare(strict_types=1); use Doctrine\ORM\EntityManager; use App\Entity\log; -use Symfony\Component\Process\Exception\ProcessFailedException; use Symfony\Component\HttpFoundation\File\UploadedFile; class MaintenanceController @@ -61,9 +60,8 @@ class MaintenanceController die; } // exeptions lancées dans Backup::mySQLdump - catch(ProcessFailedException $e){ // pas d'info $e pour le client - header('Location: ' . new URL(['page' => 'maintenance', 'error' => '500'])); - die; + catch(RuntimeException $e){ // pas d'info $e pour le client7 + header('Location: ' . new URL(['page' => 'maintenance', 'get_last_dump' => $e->getMessage()])); } die; } diff --git a/src/controller/MenuAndPathsController.php b/src/controller/MenuAndPathsController.php index 4d37f3d..799f14b 100644 --- a/src/controller/MenuAndPathsController.php +++ b/src/controller/MenuAndPathsController.php @@ -141,7 +141,7 @@ class MenuAndPathsController $page = Model::$menu->findPageById((int)$id); $parent = $page->getParent(); // peut être null - if($parent == null){ + if($parent === null){ $parent = Model::$menu; } @@ -150,6 +150,12 @@ class MenuAndPathsController if($page->getPosition() > 1){ foreach($parent->getChildren() as $child){ if($child->getPosition() === $page->getPosition() - 1){ + // refus si $parent est une adresse, ça va casser le lien, exemple: index.php?page=chemin/http://un_site_web.fr/vers/ici + if(str_starts_with($child->getEndOfPath(), 'http')){ + echo json_encode(['success' => false, 'error' => 'new_parent_is_a_link']); + die; + } + $page->setParent($child); break; } diff --git a/src/controller/UserController.php b/src/controller/UserController.php index 9746a47..f911d2d 100644 --- a/src/controller/UserController.php +++ b/src/controller/UserController.php @@ -92,7 +92,13 @@ class UserController $_SESSION['user']['role'] = $user->getRole(); EmailService::cleanEmails($entityManager); - Backup::mySQLdump($entityManager, 'auto'); // créer un nouveau backup + + try{ + Backup::mySQLdump($entityManager, 'auto'); // créer un nouveau backup + } + catch(RuntimeException $e){ + echo ''; + } $url = new URL(isset($_GET['from']) ? ['page' => $_GET['from']] : []); isset($_GET['id']) ? $url->addParams(['id' => $_GET['id']]) : ''; -- cgit v1.2.3