Correction CSRF en effacement de la page

This commit is contained in:
fredtempez 2019-01-04 23:24:00 +01:00
parent 5d300c93d6
commit 995278c753
2 changed files with 49 additions and 39 deletions

View File

@ -77,33 +77,43 @@ class page extends common {
* Suppression * Suppression
*/ */
public function delete() { public function delete() {
// $url prend l'adresse sans le token
$url = explode('&',$this->getUrl(2));
// La page n'existe pas // La page n'existe pas
if($this->getData(['page', $this->getUrl(2)]) === null) { if($this->getData(['page', $url[0]]) === null) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'access' => false 'access' => false
]); ]);
} }
// Impossible de supprimer la page d'accueil // Impossible de supprimer la page d'accueil
elseif($this->getUrl(2) === $this->getData(['config', 'homePageId'])) { elseif($url[0] === $this->getData(['config', 'homePageId'])) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
'notification' => 'Impossible de supprimer la page d\'accueil' 'notification' => 'Impossible de supprimer la page d\'accueil'
]); ]);
} }
// Impossible de supprimer une page contenant des enfants // Jeton incorrect
elseif($this->getHierarchy($this->getUrl(2))) { elseif($_GET['csrf'] !== $_SESSION['csrf']) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
'notification' => 'Suppression non autorisée'
]);
}
// Impossible de supprimer une page contenant des enfants
elseif($this->getHierarchy($url[0])) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
'notification' => 'Impossible de supprimer une page contenant des enfants' 'notification' => 'Impossible de supprimer une page contenant des enfants'
]); ]);
} }
// Suppression // Suppression
else { else {
$this->deleteData(['page', $this->getUrl(2)]); $this->deleteData(['page', $url[0]]);
$this->deleteData(['module', $this->getUrl(2)]); $this->deleteData(['module', $url[0]]);
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl(false), 'redirect' => helper::baseUrl(false),

View File

@ -13,7 +13,7 @@
<div class="col2 offset6"> <div class="col2 offset6">
<?php echo template::button('pageEditDelete', [ <?php echo template::button('pageEditDelete', [
'class' => 'buttonRed', 'class' => 'buttonRed',
'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(2), 'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(2) . '&csrf=' . $_SESSION['csrf'],
'value' => 'Supprimer', 'value' => 'Supprimer',
'ico' => 'cancel' 'ico' => 'cancel'
]); ?> ]); ?>