From 23ec48c5d7e852393cf4656dc4961c4ca613d1d7 Mon Sep 17 00:00:00 2001 From: Tan Nguyen Date: Fri, 16 Aug 2024 21:51:23 +0700 Subject: [PATCH 1/3] feat: Create a config to override filesystem --- config/filesystems.php | 76 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 config/filesystems.php diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..4806e0a --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,76 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been set up for each driver as an example of the required values. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => env('FILESYSTEM_FILE_ROOT', storage_path('app')), + 'throw' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => env('FILESYSTEM_FILE_ROOT', storage_path('app/public')), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; From 285fa60c03ef0ff2167d4db7d9f19b553cf7c43e Mon Sep 17 00:00:00 2001 From: Tan Nguyen Date: Sun, 18 Aug 2024 12:20:12 +0700 Subject: [PATCH 2/3] fix: change logic to register config for core --- config/filesystems.php | 4 ++-- src/Providers/BlogCoreServiceProvider.php | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/config/filesystems.php b/config/filesystems.php index 4806e0a..e9d9dbd 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -32,13 +32,13 @@ 'local' => [ 'driver' => 'local', - 'root' => env('FILESYSTEM_FILE_ROOT', storage_path('app')), + 'root' => storage_path('app'), 'throw' => false, ], 'public' => [ 'driver' => 'local', - 'root' => env('FILESYSTEM_FILE_ROOT', storage_path('app/public')), + 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', 'throw' => false, diff --git a/src/Providers/BlogCoreServiceProvider.php b/src/Providers/BlogCoreServiceProvider.php index 2ee1e66..753fc5a 100644 --- a/src/Providers/BlogCoreServiceProvider.php +++ b/src/Providers/BlogCoreServiceProvider.php @@ -94,7 +94,14 @@ protected function registerConfigs(): void foreach ($files as $file) { if (pathinfo($file, PATHINFO_EXTENSION) === 'php') { - $this->mergeConfigFrom($configDir . '/' . $file, pathinfo($file, PATHINFO_FILENAME)); + $configName = pathinfo($file, PATHINFO_FILENAME); + $configPath = $configDir.'/'.$file; + + if (file_exists(config_path($configName.'.php'))) { + config()->set($configName, array_merge(config($configName), require $configPath)); + } else { + $this->mergeConfigFrom($configPath, $configName); + } } } } From 7c0e0881cda3c4453da85b9e01b38f7da180898a Mon Sep 17 00:00:00 2001 From: Tan Nguyen Date: Sun, 18 Aug 2024 12:42:18 +0700 Subject: [PATCH 3/3] fix: check arrayable for app config name --- src/Providers/BlogCoreServiceProvider.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Providers/BlogCoreServiceProvider.php b/src/Providers/BlogCoreServiceProvider.php index 753fc5a..f329c90 100644 --- a/src/Providers/BlogCoreServiceProvider.php +++ b/src/Providers/BlogCoreServiceProvider.php @@ -98,7 +98,10 @@ protected function registerConfigs(): void $configPath = $configDir.'/'.$file; if (file_exists(config_path($configName.'.php'))) { - config()->set($configName, array_merge(config($configName), require $configPath)); + config()->set($configName, array_merge( + is_array(config($configName)) ? config($configName) : [], + require $configPath + )); } else { $this->mergeConfigFrom($configPath, $configName); }