diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a078d63..f0c052da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# v1.9.16 +## 09/01/2020 + +1. [](#bugfix) + * Fixed a glitch which allows user to delete entire pages directory [#1941](https://github.com/getgrav/grav-plugin-admin/issues/1941) + * Fixed the hidden login plugin toggle + # v1.9.15 ## 06/08/2020 diff --git a/blueprints.yaml b/blueprints.yaml index f00d9356..8bb5e6ca 100644 --- a/blueprints.yaml +++ b/blueprints.yaml @@ -1,7 +1,7 @@ name: Admin Panel slug: admin type: plugin -version: 1.9.15 +version: 1.9.16 testing: false description: Adds an advanced administration panel to manage your site icon: empire diff --git a/classes/admincontroller.php b/classes/admincontroller.php index 17e0b6a0..95295ac5 100644 --- a/classes/admincontroller.php +++ b/classes/admincontroller.php @@ -487,6 +487,11 @@ class AdminController extends AdminBaseController $data = (array)$this->data; + $folder = $data['folder'] ?? ''; + if ($folder === '' || mb_strpos($folder, '/') !== false) { + throw new \RuntimeException('Creating folder failed, bad folder name', 400); + } + if ($data['route'] === '/') { $path = $this->grav['locator']->findResource('page://'); } else { @@ -494,7 +499,7 @@ class AdminController extends AdminBaseController } $orderOfNewFolder = static::getNextOrderInFolder($path); - $new_path = $path . '/' . $orderOfNewFolder . '.' . $data['folder']; + $new_path = $path . '/' . $orderOfNewFolder . '.' . $folder; Folder::create($new_path); Cache::clearCache('invalidate'); @@ -585,6 +590,11 @@ class AdminController extends AdminBaseController /** @var PageInterface $obj */ $obj = $this->admin->page(true); + $folder = $data['folder'] ?? null; + if ($folder === '' || mb_strpos($folder, '/') !== false) { + throw new \RuntimeException('Saving page failed: bad folder name', 400); + } + if (!isset($data['folder']) || !$data['folder']) { $data['folder'] = $obj->slug(); $this->data['folder'] = $obj->slug(); @@ -814,6 +824,10 @@ class AdminController extends AdminBaseController $folder = \Grav\Plugin\Admin\Utils::slug($data[substr($folder, 9)]); } $folder = ltrim($folder, '_'); + if ($folder === '' || mb_strpos($folder, '/') !== false) { + throw new \RuntimeException('Creating page failed: bad folder name', 400); + } + if (!empty($data['modular'])) { $folder = '_' . $folder; } diff --git a/themes/grav/templates/partials/plugins-list.html.twig b/themes/grav/templates/partials/plugins-list.html.twig index e9607809..b46b4abf 100644 --- a/themes/grav/templates/partials/plugins-list.html.twig +++ b/themes/grav/templates/partials/plugins-list.html.twig @@ -42,7 +42,7 @@ {% if isTestingRelease %}test release{% endif %}