]> BookStack Code Mirror - bookstack/commitdiff
Added 404 response for non-existing setting categories 3349/head
authorDan Brown <redacted>
Mon, 28 Mar 2022 10:16:20 +0000 (11:16 +0100)
committerDan Brown <redacted>
Mon, 28 Mar 2022 10:16:20 +0000 (11:16 +0100)
- Added test to cover.

app/Http/Controllers/SettingController.php
tests/Settings/SettingsTest.php

index 7f7f4c9caddd791d8b67a7d7f825edab50665667..3d1c184cdcebe0acac5ac0ad441b8ef9c00aeb0d 100644 (file)
@@ -11,6 +11,8 @@ class SettingController extends Controller
 {
     protected ImageRepo $imageRepo;
 
+    protected array $settingCategories = ['features', 'customization', 'registration'];
+
     public function __construct(ImageRepo $imageRepo)
     {
         $this->imageRepo = $imageRepo;
@@ -21,6 +23,7 @@ class SettingController extends Controller
      */
     public function index(string $category)
     {
+        $this->ensureCategoryExists($category);
         $this->checkPermission('settings-manage');
         $this->setPageTitle(trans('settings.settings'));
 
@@ -39,6 +42,7 @@ class SettingController extends Controller
      */
     public function update(Request $request, string $category)
     {
+        $this->ensureCategoryExists($category);
         $this->preventAccessInDemoMode();
         $this->checkPermission('settings-manage');
         $this->validate($request, [
@@ -73,4 +77,11 @@ class SettingController extends Controller
 
         return redirect("/settings/${category}");
     }
+
+    protected function ensureCategoryExists(string $category): void
+    {
+        if (!in_array($category, $this->settingCategories)) {
+            abort(404);
+        }
+    }
 }
index b55911523666dce8890bfc840c18109e572af4a8..5d8c36996c7fd0c09eeced990c6e5b803a74952e 100644 (file)
@@ -28,4 +28,12 @@ class SettingsTest extends TestCase
             $resp->assertElementExists("form[action$=\"/settings/{$category}\"]");
         }
     }
+
+    public function test_not_found_setting_category_throws_404()
+    {
+        $resp = $this->asAdmin()->get('/settings/biscuits');
+
+        $resp->assertStatus(404);
+        $resp->assertSee('Page Not Found');
+    }
 }
\ No newline at end of file
Morty Proxy This is a proxified and sanitized view of the page, visit original site.