From 5e60c402344e62f6d721bd40e11d26927507aa19 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 8 Apr 2026 01:46:27 +0000 Subject: [PATCH] V0.8.5 --- db/auth.php | 9 +++- scpreset.php | 134 +++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 106 insertions(+), 37 deletions(-) diff --git a/db/auth.php b/db/auth.php index c75aca2..9ae96c2 100644 --- a/db/auth.php +++ b/db/auth.php @@ -80,6 +80,13 @@ function auth_validate_csrf(?string $csrf_token): bool return hash_equals($_SESSION['csrf_token'], $csrf_token); } +function auth_is_logged_in(): bool +{ + auth_start_session(); + + return isset($_SESSION['user']) && isset($_SESSION['role']); +} + function auth_is_admin(): bool { auth_start_session(); @@ -108,4 +115,4 @@ function auth_flash_get(): ?array unset($_SESSION['flash']); return $flash; -} +} \ No newline at end of file diff --git a/scpreset.php b/scpreset.php index a007aa3..7a259f8 100644 --- a/scpreset.php +++ b/scpreset.php @@ -5,7 +5,7 @@ require_once __DIR__ . '/db/auth.php'; auth_start_session(); auth_bootstrap(); -if (!auth_is_admin()) { +if (!auth_is_logged_in()) { header('Location: index.php'); exit; } @@ -17,6 +17,10 @@ $flash_message = $flash['message'] ?? ''; $db = db(); $csrf_token = auth_csrf_token(); +$current_session_user = $_SESSION['user'] ?? ''; +$current_session_role = $_SESSION['role'] ?? 'member'; +$role_label = ($current_session_role === 'admin') ? 'Administrateur' : 'Membre'; + // Handle POST actions if ($_SERVER['REQUEST_METHOD'] === 'POST') { $submitted_csrf = $_POST['csrf_token'] ?? ''; @@ -34,15 +38,17 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $manufacturer = trim($_POST['manufacturer'] ?? ''); $description = trim($_POST['description'] ?? ''); $link = trim($_POST['link'] ?? ''); + $creator = $current_session_user ?: 'Inconnu'; if ($name !== '' && $manufacturer !== '' && $link !== '') { try { - $stmt = $db->prepare("INSERT INTO tbl_scpreset (cl_scpreset_name, cl_scpreset_manufacturer, cl_scpreset_description, cl_scpreset_link) VALUES (:name, :manufacturer, :description, :link)"); + $stmt = $db->prepare("INSERT INTO tbl_scpreset (cl_scpreset_name, cl_scpreset_manufacturer, cl_scpreset_description, cl_scpreset_link, cl_scpreset_creator) VALUES (:name, :manufacturer, :description, :link, :creator)"); $stmt->execute([ 'name' => $name, 'manufacturer' => $manufacturer, 'description' => $description, - 'link' => $link + 'link' => $link, + 'creator' => $creator ]); auth_flash_set('success', 'Preset ajouté avec succès.'); } catch (PDOException $e) { @@ -57,22 +63,26 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Update preset if ($action === 'update_preset') { - $preset_id = (int)$_POST['preset_id']; + $preset_id = (int)($_POST['preset_id'] ?? 0); $name = trim($_POST['name'] ?? ''); $manufacturer = trim($_POST['manufacturer'] ?? ''); $description = trim($_POST['description'] ?? ''); $link = trim($_POST['link'] ?? ''); if ($preset_id > 0 && $name !== '' && $manufacturer !== '' && $link !== '') { - $stmt = $db->prepare("UPDATE tbl_scpreset SET cl_scpreset_name = :name, cl_scpreset_manufacturer = :manufacturer, cl_scpreset_description = :description, cl_scpreset_link = :link WHERE cl_scpreset_id = :id"); - $stmt->execute([ - 'name' => $name, - 'manufacturer' => $manufacturer, - 'description' => $description, - 'link' => $link, - 'id' => $preset_id - ]); - auth_flash_set('success', 'Preset mis à jour.'); + try { + $stmt = $db->prepare("UPDATE tbl_scpreset SET cl_scpreset_name = :name, cl_scpreset_manufacturer = :manufacturer, cl_scpreset_description = :description, cl_scpreset_link = :link WHERE cl_scpreset_id = :id"); + $stmt->execute([ + 'name' => $name, + 'manufacturer' => $manufacturer, + 'description' => $description, + 'link' => $link, + 'id' => $preset_id + ]); + auth_flash_set('success', 'Preset mis à jour.'); + } catch (PDOException $e) { + auth_flash_set('error', 'Erreur lors de la mise à jour : ' . $e->getMessage()); + } } else { auth_flash_set('error', 'Données invalides.'); } @@ -82,11 +92,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Delete preset if ($action === 'delete_preset') { - $preset_id = (int)$_POST['preset_id']; - $stmt = $db->prepare("DELETE FROM tbl_scpreset WHERE cl_scpreset_id = :id"); - $stmt->execute(['id' => $preset_id]); - - auth_flash_set('success', 'Preset supprimé.'); + $preset_id = (int)($_POST['preset_id'] ?? 0); + if ($preset_id > 0) { + $stmt = $db->prepare("DELETE FROM tbl_scpreset WHERE cl_scpreset_id = :id"); + $stmt->execute(['id' => $preset_id]); + auth_flash_set('success', 'Preset supprimé.'); + } else { + auth_flash_set('error', 'ID de preset invalide.'); + } header('Location: scpreset.php'); exit; } @@ -95,8 +108,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Fetch all presets $stmt_list = $db->query("SELECT * FROM tbl_scpreset ORDER BY cl_scpreset_manufacturer ASC, cl_scpreset_name ASC"); $presets = $stmt_list->fetchAll(); - -$current_session_user = $_SESSION['user'] ?? ''; ?> @@ -264,7 +275,7 @@ $current_session_user = $_SESSION['user'] ?? ''; .flash.success { border-color: var(--success); background: rgba(0, 255, 136, 0.1); color: #baffda; } .manufacturer-text { - font-size: 0.75rem; + font-size: 0.65rem; color: #888; text-transform: uppercase; letter-spacing: 1px; @@ -272,6 +283,14 @@ $current_session_user = $_SESSION['user'] ?? ''; margin-top: 2px; } + .creator-text { + font-size: 0.65rem; + color: #888; + font-style: italic; + display: block; + margin-top: 1px; + } + .desc-text { font-size: 0.8rem; color: #aaa; @@ -295,7 +314,7 @@ $current_session_user = $_SESSION['user'] ?? '';

R.E.A.C.T. Ship Presets

-

Niveau d\'accès : Administrateur | Session :

+

Niveau d\'accès : | Session :

Site @@ -304,9 +323,11 @@ $current_session_user = $_SESSION['user'] ?? '';
@@ -317,35 +338,37 @@ $current_session_user = $_SESSION['user'] ?? '';
- +
-

Nouveau Preset

-
+

Nouveau Preset

+ - + +
- +
- +
- +
- +
- + +
@@ -371,8 +394,9 @@ $current_session_user = $_SESSION['user'] ?? ''; -
+
+ Par
@@ -384,6 +408,16 @@ $current_session_user = $_SESSION['user'] ?? '';
+
@@ -402,5 +436,33 @@ $current_session_user = $_SESSION['user'] ?? '';
+ + - + \ No newline at end of file