Skip to content

quix-labs/laravel-supabase-flysystem

Repository files navigation

Laravel Supabase Storage Adapter

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads


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.

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages