]> BookStack Code Mirror - bookstack/commitdiff
Fixed app logo visibility with secure_restricted images
authorDan Brown <redacted>
Thu, 10 Nov 2022 14:15:59 +0000 (14:15 +0000)
committerDan Brown <redacted>
Thu, 10 Nov 2022 14:15:59 +0000 (14:15 +0000)
Includes test to cover.
For #3827

app/Uploads/ImageService.php
tests/Uploads/ImageTest.php

index 0199c207ea18927a93d17ed5be5ff75a5f73e7a3..55c327e7a552be241748833206e40f8468d6e913 100644 (file)
@@ -88,16 +88,17 @@ class ImageService
     protected function getStorageDiskName(string $imageType): string
     {
         $storageType = config('filesystems.images');
+        $localSecureInUse = ($storageType === 'local_secure' || $storageType === 'local_secure_restricted');
 
         // Ensure system images (App logo) are uploaded to a public space
-        if ($imageType === 'system' && $storageType === 'local_secure') {
-            $storageType = 'local';
+        if ($imageType === 'system' && $localSecureInUse) {
+            return 'local';
         }
 
         // Rename local_secure options to get our image specific storage driver which
         // is scoped to the relevant image directories.
-        if ($storageType === 'local_secure' || $storageType === 'local_secure_restricted') {
-            $storageType = 'local_secure_images';
+        if ($localSecureInUse) {
+            return 'local_secure_images';
         }
 
         return $storageType;
index e929d63ec60733e87846a8e7d43e2d5af93cf7f5..0e4065a827453c743188b16342f00d3bf5ddcdd2 100644 (file)
@@ -310,7 +310,7 @@ class ImageTest extends TestCase
         }
     }
 
-    public function test_system_images_remain_public()
+    public function test_system_images_remain_public_with_local_secure()
     {
         config()->set('filesystems.images', 'local_secure');
         $this->asAdmin();
@@ -327,6 +327,23 @@ class ImageTest extends TestCase
         }
     }
 
+    public function test_system_images_remain_public_with_local_secure_restricted()
+    {
+        config()->set('filesystems.images', 'local_secure_restricted');
+        $this->asAdmin();
+        $galleryFile = $this->getTestImage('my-system-test-restricted-upload.png');
+        $expectedPath = public_path('uploads/images/system/' . date('Y-m') . '/my-system-test-restricted-upload.png');
+
+        $upload = $this->call('POST', '/settings/customization', [], [], ['app_logo' => $galleryFile], []);
+        $upload->assertRedirect('/settings/customization');
+
+        $this->assertTrue(file_exists($expectedPath), 'Uploaded image not found at path: ' . $expectedPath);
+
+        if (file_exists($expectedPath)) {
+            unlink($expectedPath);
+        }
+    }
+
     public function test_secure_restricted_images_inaccessible_without_relation_permission()
     {
         config()->set('filesystems.images', 'local_secure_restricted');