From 05002ccee459e6c58de052fbefd48667121ffb67 Mon Sep 17 00:00:00 2001 From: Pontoporeia Date: Thu, 16 Apr 2026 14:33:53 +0200 Subject: [PATCH] fix: allow isAuthenticated() bypass in development mode --- public/admin/actions/apropos.php | 83 +++++---- public/admin/contenus-edit.php | 198 ++++++++++----------- public/admin/contenus.php | 1 - public/apropos.php | 64 ++++--- src/AdminAuth.php | 4 + storage/migrations/011_apropos_entries.sql | 46 +++++ storage/migrations/011_apropos_urls.sql | 3 - storage/posterg.db | Bin 262144 -> 262144 bytes storage/schema.sql | 47 ++++- 9 files changed, 275 insertions(+), 171 deletions(-) create mode 100644 storage/migrations/011_apropos_entries.sql delete mode 100644 storage/migrations/011_apropos_urls.sql diff --git a/public/admin/actions/apropos.php b/public/admin/actions/apropos.php index 4450a73..11623db 100644 --- a/public/admin/actions/apropos.php +++ b/public/admin/actions/apropos.php @@ -1,6 +1,7 @@ 500) { - die("URL trop longue (max 500 caractères)."); - } - $db->saveAproposContent('erg_url', $value); - } else { - $items = $_POST['items'] ?? []; - $cleaned = []; - foreach ($items as $item) { - if ($aproposKey === 'contacts') { - $name = trim($item['name'] ?? ''); - if ($name === '') continue; // skip empty rows - $entry = [ - 'name' => trim($item['name'] ?? ''), - 'role' => trim($item['role'] ?? ''), - 'email' => trim($item['email'] ?? ''), - ]; - $url = trim($item['url'] ?? ''); - if ($url !== '') { - $entry['url'] = $url; - } - $cleaned[] = $entry; - } else { // credits - $label = trim($item['label'] ?? ''); - $val = trim($item['value'] ?? ''); - $url = trim($item['url'] ?? ''); - if ($label === '' && $val === '') continue; - $entry = [ - 'label' => $label, - 'value' => $val, - ]; - if ($url !== '') { - $entry['url'] = $url; - } - $cleaned[] = $entry; + foreach ($groups as $group) { + if ($aproposKey === 'credits') { + $label = trim($group['label'] ?? ''); + if ($label === '') continue; + $entries = []; + foreach ($group['entries'] ?? [] as $entry) { + $text = trim($entry['text'] ?? ''); + if ($text === '') continue; + $e = ['text' => $text]; + $url = trim($entry['url'] ?? ''); + if ($url !== '') $e['url'] = $url; + $entries[] = $e; } + if (empty($entries)) continue; + $cleaned[] = ['label' => $label, 'entries' => $entries]; + } else { // contacts + $role = trim($group['role'] ?? ''); + if ($role === '') continue; + $entries = []; + foreach ($group['entries'] ?? [] as $entry) { + $text = trim($entry['text'] ?? ''); + if ($text === '') continue; + $e = [ + 'text' => $text, + 'email' => trim($entry['email'] ?? ''), + ]; + $url = trim($entry['url'] ?? ''); + if ($url !== '') $e['url'] = $url; + $entries[] = $e; + } + if (empty($entries)) continue; + $cleaned[] = ['role' => $role, 'entries' => $entries]; } - if (empty($cleaned)) { - die("Au moins un élément est requis."); - } - $db->saveAproposContent($aproposKey, $cleaned); } + if (empty($cleaned)) { + die("Au moins un groupe avec des entrées est requis."); + } + + $db->saveAproposContent($aproposKey, $cleaned); App::flash('success', "Contenu « $aproposKey » mis à jour avec succès."); } catch (Exception $e) { error_log("Apropos save error: " . $e->getMessage()); diff --git a/public/admin/contenus-edit.php b/public/admin/contenus-edit.php index e4ae92f..3a3ece3 100644 --- a/public/admin/contenus-edit.php +++ b/public/admin/contenus-edit.php @@ -10,7 +10,7 @@ if (empty($_SESSION["csrf_token"])) { } $allowedPageSlugs = ["about", "licenses", "charte"]; -$allowedApropos = ["contacts", "credits", "erg_url"]; +$allowedApropos = ["contacts", "credits"]; $pageSlug = $_GET["slug"] ?? ""; $aproposKey = $_GET["apropos"] ?? ""; @@ -44,7 +44,6 @@ try { $editTitle = match($aproposKey) { 'contacts' => 'Contacts', 'credits' => 'Crédits', - 'erg_url' => 'URL de l\'ERG', }; } } catch (Exception $e) { @@ -104,126 +103,127 @@ require_once APP_ROOT . "/templates/head.php"; - -
- "> - - - - - - -
- - +
"> - - $item): ?> -
- Contact - - + $group): ?> +
+ + + + + + + + - - - - - - - - -
+ + $entry): ?> +
+ + + + + + + + +
- - $item): ?> -
- Crédit - - + +
+ - - - - - -
- - - - + -