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

@ -33,9 +33,9 @@ class page extends common {
// menu image
// Position du module
public static $modulePosition = [
'bottom' => 'En bas',
'top' => 'En haut',
'free' => 'Libre'
'bottom' => 'En bas',
'top' => 'En haut',
'free' => 'Libre'
];
/**
* Création
@ -76,41 +76,51 @@ class page extends common {
/**
* Suppression
*/
public function delete() {
// La page n'existe pas
if($this->getData(['page', $this->getUrl(2)]) === null) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
}
// Impossible de supprimer la page d'accueil
elseif($this->getUrl(2) === $this->getData(['config', 'homePageId'])) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2),
'notification' => 'Impossible de supprimer la page d\'accueil'
]);
}
// Impossible de supprimer une page contenant des enfants
elseif($this->getHierarchy($this->getUrl(2))) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2),
'notification' => 'Impossible de supprimer une page contenant des enfants'
]);
}
// Suppression
else {
$this->deleteData(['page', $this->getUrl(2)]);
$this->deleteData(['module', $this->getUrl(2)]);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl(false),
'notification' => 'Page supprimée',
'state' => true
]);
}
public function delete() {
// $url prend l'adresse sans le token
$url = explode('&',$this->getUrl(2));
// La page n'existe pas
if($this->getData(['page', $url[0]]) === null) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
}
// Impossible de supprimer la page d'accueil
elseif($url[0] === $this->getData(['config', 'homePageId'])) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
'notification' => 'Impossible de supprimer la page d\'accueil'
]);
}
// Jeton incorrect
elseif($_GET['csrf'] !== $_SESSION['csrf']) {
// Valeurs en sortie
$this->addOutput([
'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'
]);
}
// Suppression
else {
$this->deleteData(['page', $url[0]]);
$this->deleteData(['module', $url[0]]);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl(false),
'notification' => 'Page supprimée',
'state' => true
]);
}
}
/**

View File

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