iclimber / laravel-supabase-flysystem
Supabase Adapter for Laravel Flysystem Storage
Fund package maintenance!
alancolant
Requires
- php: ^8.1
- ext-fileinfo: *
- guzzlehttp/guzzle: ^7.2
- illuminate/contracts: ^10.0|^11.0
- illuminate/filesystem: ^10.0|^11.0
- illuminate/http: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- league/flysystem: ^3.0
Requires (Dev)
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
README
Easily integrate Supabase as a storage driver in Laravel with this Flysystem adapter.
Simplify file storage and retrieval using Laravel's convenient storage system while leveraging the powerful features of Supabase.
Requirements
- PHP >= 8.1
- Laravel 10.x|11.x
- Fileinfo
ext-fileinfo
Installation
To install the package, use Composer:
composer require quix-labs/laravel-supabase-flysystem
Configuration
After installation, configure the Supabase driver in Laravel's config/filesystems.php
.
Add the following to the disks array:
'supabase' => [ 'driver' => 'supabase', 'key' => env('SUPABASE_STORAGE_KEY'), // Use a privileged key; read-only does not work 'bucket' => env('SUPABASE_STORAGE_BUCKET'), 'endpoint' => env('SUPABASE_STORAGE_ENDPOINT'), 'url' => null, // <- Automatically generated; change here if you are using a proxy 'public' => true, // Default to true 'defaultUrlGeneration' => null, // 'signed' | 'public' <- default depends on public 'defaultUrlGenerationOptions' => [ 'download' => false, 'transform' => [], ], 'signedUrlExpires' => 60*60*24, // 1 day <- default to 1 hour (3600) ],
Usage
// Example code for using the Supabase driver with Laravel Storage Storage::disk('supabase')->put('file.txt', 'contents'); // Custom function to generate a public URL Storage::disk('supabase')->getAdapter()->getPublicUrl('completelyPublicFile.png', [ 'download' => false, // Set this to true if you want the user's browser to automatically trigger download // Transform only applied if the file is detected as an image; else ignored 'transform' => [ 'width' => 200, //... All options -> https://supabase.com/docs/guides/storage/serving/image-transformations#transformation-options ]]); // Custom function to generate a signed URL Storage::disk('supabase')->getAdapter()->getSignedUrl('veryConfidentialFile.png', [ 'expiresIn' => 60 * 5, // 5 minutes //... Same options as getPublicUrl ]);
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.