This package contains a Flysystem adapter for Firebase Storage.
You can install the package via composer:
composer require galihlprakoso/flysystem-firebase-storage
use galihlprakoso\Adapters\FirebaseStorageAdapter;
use Kreait\Firebase\Factory;
$factory = (new Factory())->withServiceAccount('<path to your service account json file>');
$storageClient = $factory->createStorage();
$adapter = new FirebaseStorageAdapter($storageClient, '<bucket name>');
Define the config in your filesystems.php
file.
[
'disks' => [
//... another configuration
'firebase-storage' => [
'driver' => 'firebase-storage',
'service_account_json_name' => env('FIREBASE_STORAGE_SERVICE_ACCOUNT_JSON_NAME'),
'bucket_name' => env('FIREBASE_STORAGE_BUCKET_NAME'),
],
]
]
Add this Storage extension in your Laravel's AppServiceProvider.php
file, inside the boot()
method:
Storage::extend('firebase-storage', function (Application $app, array $config) {
$factory = (new Factory())->withServiceAccount(base_path('/' . $config['service_account_json_name']));
$storageClient = $factory->createStorage();
$adapter = new FirebaseStorageAdapter($storageClient, $config['bucket_name']);
return new FilesystemAdapter(
new Filesystem($adapter, $config),
$adapter,
$config
);
});