From bb49c8817257aa39665adef366ee987f14b981a0 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Tue, 20 Jun 2023 19:54:13 +0200 Subject: [PATCH] Nettoyage des sessions dans GET Page Delete nettoyage --- core/class/layout.class.php | 10 ++--- core/module/page/page.php | 69 ++++++++++------------------- core/module/plugin/plugin.php | 14 +++--- core/module/theme/theme.php | 4 +- core/module/translate/translate.php | 10 ++--- core/module/user/user.php | 4 +- 6 files changed, 45 insertions(+), 66 deletions(-) diff --git a/core/class/layout.class.php b/core/class/layout.class.php index a696a4e8..6ce3f07b 100644 --- a/core/class/layout.class.php +++ b/core/class/layout.class.php @@ -346,7 +346,7 @@ class layout extends common template::ico('user', [ 'margin' => 'all', 'help' => 'Mon compte', - 'href' => helper::baseUrl() . 'user/edit/' . $this->getUser('id') . '/' . $_SESSION['csrf'] + 'href' => helper::baseUrl() . 'user/edit/' . $this->getUser('id') ]); if ( $this->getData(['user', $this->getUser('id'), 'files']) === true @@ -509,7 +509,7 @@ class layout extends common $itemsRight .= '
  • ' . template::ico('user', [ 'help' => 'Mon compte', 'margin' => 'right', - 'href' => helper::baseUrl() . 'user/edit/' . $this->getUser('id') . '/' . $_SESSION['csrf'] + 'href' => helper::baseUrl() . 'user/edit/' . $this->getUser('id') ]) . '
  • '; $itemsRight .= '
  • ' . template::ico('logout', [ @@ -962,13 +962,13 @@ class layout extends common ]) . '
  • '; } $leftItems .= '
  • ' . template::ico('clone', [ - 'href' => helper::baseUrl() . 'page/duplicate/' . $this->getUrl(0) . '&csrf=' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . 'page/duplicate/' . $this->getUrl(0), 'help' => 'Dupliquer la page' ]) . '
  • '; $leftItems .= '
  • ' . template::ico('trash', [ - 'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(0) . '&csrf=' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(0), 'help' => 'Supprimer la page', 'id' => 'pageDelete' ]) @@ -1033,7 +1033,7 @@ class layout extends common } } if ($this->getUser('group') >= self::GROUP_MODERATOR) { - $rightItems .= '
  • getUser('id') . '" data-tippy-content="' . helper::translate('Configurer mon compte') . '">' . template::ico('user', ['margin' => 'right']) . '' . $this->getUser('firstname') . ' ' . $this->getUser('lastname') . '
  • '; diff --git a/core/module/page/page.php b/core/module/page/page.php index 94bd3e01..ab1fa535 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -186,115 +186,94 @@ class page extends common public function delete() { // $url prend l'adresse sans le token - $url = explode('&', $this->getUrl(2)); + $page = $this->getUrl(2); // La page n'existe pas - if ($this->getData(['page', $url[0]]) === null) { + if ($this->getData(['page', $page]) === null) { // Valeurs en sortie $this->addOutput([ 'access' => false ]); } // Jeton incorrect - elseif (!isset($_GET['csrf'])) { + elseif ($this->checkCSRF()) { // Valeurs en sortie $this->addOutput([ - 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], + 'redirect' => helper::baseUrl() . 'page/edit/' . $page, 'notification' => helper::translate('Jeton invalide') ]); - } elseif ($_GET['csrf'] !== $_SESSION['csrf']) { - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], - 'notification' => helper::translate('Suppression interdite') - ]); } // Impossible de supprimer la page d'accueil - elseif ($url[0] === $this->getData(['locale', 'homePageId'])) { + elseif ($page === $this->getData(['locale', 'homePageId'])) { // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } - // Impossible de supprimer la page de recherche affectée - elseif ($url[0] === $this->getData(['locale', 'searchPageId'])) { + // Impossible de supprimer la page affectée + elseif ($page === $this->getData(['locale', 'searchPageId'])) { // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } - // Impossible de supprimer la page des mentions légales affectée - elseif ($url[0] === $this->getData(['locale', 'legalPageId'])) { + // Impossible de supprimer la page affectée + elseif ($page === $this->getData(['locale', 'legalPageId'])) { // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } - // Impossible de supprimer la page des mentions légales affectée - elseif ($url[0] === $this->getData(['locale', 'page404'])) { + // Impossible de supprimer la page affectée + elseif ($page === $this->getData(['locale', 'page404'])) { // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } - // Impossible de supprimer la page des mentions légales affectée - elseif ($url[0] === $this->getData(['locale', 'page403'])) { + // Impossible de supprimer la page affectée + elseif ($page === $this->getData(['locale', 'page403'])) { // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } - // Impossible de supprimer la page des mentions légales affectée - elseif ($url[0] === $this->getData(['locale', 'page302'])) { + // Impossible de supprimer la page affectée + elseif ($page === $this->getData(['locale', 'page302'])) { // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } - // Jeton incorrect - elseif (!isset($_GET['csrf'])) { - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], - 'notification' => helper::translate('Jeton invalide') - ]); - } elseif ($_GET['csrf'] !== $_SESSION['csrf']) { - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], - 'notification' => helper::translate('Suppression interdite') - ]); - } // Impossible de supprimer une page contenant des enfants - elseif ($this->getHierarchy($url[0], null)) { + elseif ($this->getHierarchy($page, null)) { // Valeurs en sortie $this->addOutput([ - 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], + 'redirect' => helper::baseUrl() . 'page/edit/' . $page, 'notification' => helper::translate('Impossible de supprimer une page contenant des pages enfants') ]); } // Suppression else { - // Effacer le dossier du module - $moduleId = $this->getData(['page', $url[0], 'moduleId']); + $moduleId = $this->getData(['page', $page, 'moduleId']); $modulesData = helper::getModules(); if ( array_key_exists($moduleId, $modulesData) - && is_dir($modulesData[$moduleId]['dataDirectory'] . $url[0]) + && is_dir($modulesData[$moduleId]['dataDirectory'] . $page) ) { - $this->removeDir($modulesData[$moduleId]['dataDirectory'] . $url[0]); + $this->removeDir($modulesData[$moduleId]['dataDirectory'] . $page); } // Effacer la page - $this->deleteData(['page', $url[0]]); - if (file_exists(self::DATA_DIR . self::$i18nContent . '/content/' . $url[0] . '.html')) { - unlink(self::DATA_DIR . self::$i18nContent . '/content/' . $url[0] . '.html'); + $this->deleteData(['page', $page]); + if (file_exists(self::DATA_DIR . self::$i18nContent . '/content/' . $page . '.html')) { + unlink(self::DATA_DIR . self::$i18nContent . '/content/' . $page . '.html'); } - $this->deleteData(['module', $url[0]]); + $this->deleteData(['module', $page]); // Met à jour le sitemap $this->updateSitemap(); diff --git a/core/module/plugin/plugin.php b/core/module/plugin/plugin.php index dae51edc..106ca1b7 100644 --- a/core/module/plugin/plugin.php +++ b/core/module/plugin/plugin.php @@ -383,7 +383,7 @@ class plugin extends common implode(' - ', $pageInfos), template::button('moduleExport' . $key, [ 'class' => $class, - 'href' => helper::baseUrl() . $this->getUrl(0) . '/uploadItem/' . $key . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/uploadItem/' . $key , 'value' => $ico, 'help' => $help ]) @@ -482,7 +482,7 @@ class plugin extends common $infoModules[$key]['delete'] === true ? template::button('moduleDelete' . $key, [ 'class' => 'moduleDelete buttonRed', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $key . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $key , 'value' => template::ico('trash'), 'help' => 'Supprimer le module' ]) @@ -503,12 +503,12 @@ class plugin extends common $infoModules[$key]['version'], '', template::button('moduleSave' . $key, [ - 'href' => helper::baseUrl() . $this->getUrl(0) . '/save/filemanager/' . $key . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/save/filemanager/' . $key , 'value' => template::ico('download-cloud'), 'help' => 'Sauvegarder le module dans le gestionnaire de fichiers' ]), template::button('moduleDownload' . $key, [ - 'href' => helper::baseUrl() . $this->getUrl(0) . '/save/download/' . $key . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/save/download/' . $key , 'value' => template::ico('download'), 'help' => 'Sauvegarder et télécharger le module' ]) @@ -534,19 +534,19 @@ class plugin extends common $infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]['version'], template::flag($keyi18n, '20px') . ' ' . $pagesInfos[$keyi18n][$keyPage]['title'] . ' (' . $keyPage . ')', template::button('dataExport' . $keyPage, [ - 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/filemanager/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/filemanager/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage , // appel de fonction vaut exécution, utiliser un paramètre 'value' => template::ico('download-cloud'), 'help' => 'Sauvegarder les données du module dans le gestionnaire de fichiers' ]), template::button('dataExport' . $keyPage, [ - 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/download/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/download/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage , // appel de fonction vaut exécution, utiliser un paramètre 'value' => template::ico('download'), 'help' => 'Sauvegarder et télécharger les données du module' ]), template::button('dataDelete' . $keyPage, [ - 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataDelete/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataDelete/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage , // appel de fonction vaut exécution, utiliser un paramètre 'value' => template::ico('trash'), 'class' => 'buttonRed dataDelete', diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index af0c60ac..aa145c51 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -625,14 +625,14 @@ class theme extends common $type, $type !== 'websafe' ? template::button('themeFontEdit' . $fontId, [ 'class' => 'themeFontEdit', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontEdit/' . $type . '/' . $fontId . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontEdit/' . $type . '/' . $fontId , 'value' => template::ico('pencil'), 'disabled' => !empty($fontUsed[$fontId]) ]) : '', $type !== 'websafe' ? template::button('themeFontDelete' . $fontId, [ 'class' => 'themeFontDelete buttonRed', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontDelete/' . $type . '/' . $fontId . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontDelete/' . $type . '/' . $fontId , 'value' => template::ico('cancel'), 'disabled' => !empty($fontUsed[$fontId]) ]) diff --git a/core/module/translate/translate.php b/core/module/translate/translate.php index 310c3e9f..714c5bb1 100644 --- a/core/module/translate/translate.php +++ b/core/module/translate/translate.php @@ -211,7 +211,7 @@ class translate extends common $messageLocale = helper::translate('Langue du site par défaut'); } else { $messageLocale = '' . helper::translate('Définir par défaut') . ''; } self::$languagesInstalled[] = [ @@ -225,7 +225,7 @@ class translate extends common ]), template::button('translateContentLanguageLocaleDelete' . $key, [ 'class' => 'translateDelete buttonRed' . ($messageLocale === 'Langue du site par défaut' ? ' disabled' : ''), - 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/locale/' . $key . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/locale/' . $key , 'value' => template::ico('trash'), 'help' => 'Supprimer', ]) @@ -275,13 +275,13 @@ class translate extends common */ template::button('translateContentLanguageUIDownload' . $file, [ 'class' => version_compare($installedUI[$file]['version'], $storeUI[$file]['version']) < 0 ? 'buttonGreen' : '', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file , 'value' => template::ico('update'), 'help' => 'Mettre à jour', ]), template::button('translateContentLanguageUIDelete' . $file, [ 'class' => 'translateDelete buttonRed' . (in_array($file, $usersUI) ? ' disabled' : ''), - 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/ui/' . $file . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/ui/' . $file , 'value' => template::ico('trash'), 'help' => 'Supprimer', ]), @@ -300,7 +300,7 @@ class translate extends common '', template::button('translateContentLanguageUIDownload' . $file, [ 'class' => 'buttonGreen', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file , 'value' => template::ico('shopping-basket'), 'help' => 'Installer', ]) diff --git a/core/module/user/user.php b/core/module/user/user.php index e7e28b36..49fe5c7b 100644 --- a/core/module/user/user.php +++ b/core/module/user/user.php @@ -375,13 +375,13 @@ class user extends common $userFirstname . ' ' . $this->getData(['user', $userId, 'lastname']), helper::translate(self::$groups[$this->getData(['user', $userId, 'group'])]), template::button('userEdit' . $userId, [ - 'href' => helper::baseUrl() . 'user/edit/' . $userId . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . 'user/edit/' . $userId , 'value' => template::ico('pencil'), 'help' => 'Éditer' ]), template::button('userDelete' . $userId, [ 'class' => 'userDelete buttonRed', - 'href' => helper::baseUrl() . 'user/delete/' . $userId . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . 'user/delete/' . $userId , 'value' => template::ico('trash'), 'help' => 'Supprimer' ])