mirror of
				https://github.com/getgrav/grav-plugin-admin.git
				synced 2025-10-31 02:16:26 +01:00 
			
		
		
		
	Fixed a glitch which allows user to delete entire pages directory, Admin 1.10 edition [#1941]
This commit is contained in:
		| @@ -1251,6 +1251,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'] === '' || $data['route'] === '/') { | ||||
|             $path = $this->grav['locator']->findResource('page://'); | ||||
|         } else { | ||||
| @@ -1264,7 +1269,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'); | ||||
| @@ -1293,6 +1298,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(); | ||||
| @@ -1679,9 +1689,14 @@ class AdminController extends AdminBaseController | ||||
|             $folder = \Grav\Plugin\Admin\Utils::slug($title) ?: ''; | ||||
|         } | ||||
|         $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; | ||||
|         } | ||||
|  | ||||
|         $data['folder'] = $folder; | ||||
|  | ||||
|         $path = $route . '/' . $folder; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user