From ed538ccf924731eba37d895dd037eb9cf3c19c7e Mon Sep 17 00:00:00 2001 From: Victor R <39545521+viicslen@users.noreply.github.com> Date: Wed, 1 Oct 2025 13:55:41 -0400 Subject: [PATCH] Refactor disk management in FilesystemTenancyBootstrapper Refactor disk management by introducing forgetDisks method to handle tenant and scoped disks more efficiently. --- .../FilesystemTenancyBootstrapper.php | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/Bootstrappers/FilesystemTenancyBootstrapper.php b/src/Bootstrappers/FilesystemTenancyBootstrapper.php index 346892b3..e5793fb5 100644 --- a/src/Bootstrappers/FilesystemTenancyBootstrapper.php +++ b/src/Bootstrappers/FilesystemTenancyBootstrapper.php @@ -53,7 +53,7 @@ class FilesystemTenancyBootstrapper implements TenancyBootstrapper } // Storage facade - Storage::forgetDisk($this->app['config']['tenancy.filesystem.disks']); + $this->forgetDisks(); foreach ($this->app['config']['tenancy.filesystem.disks'] as $disk) { $originalRoot = $this->app['config']["filesystems.disks.{$disk}.root"]; @@ -85,9 +85,26 @@ class FilesystemTenancyBootstrapper implements TenancyBootstrapper $this->app['url']->setAssetRoot($this->app['config']['app.asset_url']); // Storage facade - Storage::forgetDisk($this->app['config']['tenancy.filesystem.disks']); + $this->forgetDisks(); foreach ($this->app['config']['tenancy.filesystem.disks'] as $disk) { $this->app['config']["filesystems.disks.{$disk}.root"] = $this->originalPaths['disks'][$disk]; } } + + protected function forgetDisks(): void + { + $tenantDisks = $this->app['config']['tenancy.filesystem.disks']; + $scopedDisks = []; + + foreach ($this->app['config']['filesystems.disks'] as $name => $disk) { + if (isset($disk['driver'], $disk['disk']) + && $disk['driver'] === 'scoped' + && in_array($disk['disk'], $tenantDisks, true) + && ! in_array($name, $scopedDisks, true)) { + $scopedDisks[] = $name; + } + } + + Storage::forgetDisk([...$tenantDisks, ...$scopedDisks]); + } }