diff --git a/modules/backend/classes/NavigationManager.php b/modules/backend/classes/NavigationManager.php index 1376a7891..0566922e0 100644 --- a/modules/backend/classes/NavigationManager.php +++ b/modules/backend/classes/NavigationManager.php @@ -3,6 +3,10 @@ use Event; use BackendAuth; use System\Classes\PluginManager; +use Validator; +use SystemException; +use Log; +use Config; /** * Manages the backend navigation. @@ -195,6 +199,24 @@ class NavigationManager $this->items = []; } + $validator = Validator::make($definitions, [ + '*.label' => 'required', + '*.icon' => 'required_without:*.iconSvg', + '*.url' => 'required', + '*.sideMenu.*.label' => 'nullable|required', + '*.sideMenu.*.icon' => 'nullable|required_without:*.sideMenu.*.iconSvg', + '*.sideMenu.*.url' => 'nullable|required', + ]); + + if ($validator->fails()) { + $errorMessage = 'Invalid menu item detected in ' . $owner . '. Contact the plugin author to fix (' . $validator->errors()->first() . ')'; + if (Config::get('app.debug', false)) { + throw new SystemException($errorMessage); + } else { + Log::error($errorMessage); + } + } + $this->addMainMenuItems($owner, $definitions); }