From a34bcfbe3eb101627d1b3589b68ebbd11879e8b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Sat, 21 Sep 2019 16:43:03 +0200 Subject: [PATCH] Intelligent asset() --- .../FilesystemTenancyBootstrapper.php | 15 +++++++++++---- src/TenancyServiceProvider.php | 3 +++ src/helpers.php | 1 + src/routes.php | 2 ++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/TenancyBootstrappers/FilesystemTenancyBootstrapper.php b/src/TenancyBootstrappers/FilesystemTenancyBootstrapper.php index 78d1b2ac..c075b13b 100644 --- a/src/TenancyBootstrappers/FilesystemTenancyBootstrapper.php +++ b/src/TenancyBootstrappers/FilesystemTenancyBootstrapper.php @@ -9,6 +9,7 @@ use Illuminate\Support\Facades\Storage; use Stancl\Tenancy\Contracts\TenancyBootstrapper; use Stancl\Tenancy\Tenant; +// todo test the helpers class FilesystemTenancyBootstrapper implements TenancyBootstrapper { protected $originalPaths = []; @@ -22,7 +23,8 @@ class FilesystemTenancyBootstrapper implements TenancyBootstrapper $this->originalPaths = [ 'disks' => [], 'path' => $this->app->storagePath(), - 'asset' => $this->app['config']['asset_url'], + 'asset_url' => $this->app['config']['app.asset_url'], + 'forced_root' => $this->app['url']->getForcedRoot(), ]; } @@ -34,8 +36,12 @@ class FilesystemTenancyBootstrapper implements TenancyBootstrapper $this->app->useStoragePath($this->originalPaths['path'] . "/{$suffix}"); // asset() - $this->app['config']['app.asset_url'] = ($this->originalPaths['asset'] ?? $this->app['config']['app.url']) . "/$suffix"; - $this->app['url']->setAssetRoot($this->app['config']['app.asset_url']); + if ($this->originalPaths['asset_url']) { + $this->app['config']['app.asset_url'] = ($this->originalPaths['asset_url'] ?? $this->app['config']['app.url']) . "/$suffix"; + $this->app['url']->setAssetRoot($this->app['config']['app.asset_url']); + } else { + $this->app['url']->forceRootUrl($this->app['url']->route('stancl.tenancy.asset', ['path' => ''])); + } // Storage facade foreach ($this->app['config']['tenancy.filesystem.disks'] as $disk) { @@ -57,8 +63,9 @@ class FilesystemTenancyBootstrapper implements TenancyBootstrapper $this->app->useStoragePath($this->originalPaths['path']); // asset() - $this->app['config']['app.asset_url'] = $this->originalPaths['asset']; + $this->app['config']['app.asset_url'] = $this->originalPaths['asset_url']; $this->app['url']->setAssetRoot($this->app['config']['app.asset_url']); + $this->app['url']->forceRootUrl($this->originalPaths['forced_root']); // Storage facade foreach ($this->app['config']['tenancy.filesystem.disks'] as $disk) { diff --git a/src/TenancyServiceProvider.php b/src/TenancyServiceProvider.php index 8656df72..860c79c6 100644 --- a/src/TenancyServiceProvider.php +++ b/src/TenancyServiceProvider.php @@ -46,6 +46,9 @@ class TenancyServiceProvider extends ServiceProvider return $this; }); + $this->app['url']->macro('getForcedRoot', function () { + return $this->forcedRoot; + }); } /** diff --git a/src/helpers.php b/src/helpers.php index 54462270..56065811 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -35,6 +35,7 @@ if (! \function_exists('tenant_asset')) { } if (! \function_exists('global_asset')) { + // todo test this function global_asset($asset) { return app('globalUrl')->asset($asset); diff --git a/src/routes.php b/src/routes.php index 69f51e70..7ada7f6b 100644 --- a/src/routes.php +++ b/src/routes.php @@ -2,6 +2,8 @@ declare(strict_types=1); +// if app.asset_url is set, suffix it +// if it's not set, use this controller? Route::get('/tenancy/assets/{path}', 'Stancl\Tenancy\Controllers\TenantAssetsController@asset') ->where('path', '(.*)') ->name('stancl.tenancy.asset');