rezaf-dev / laravel-temp-link
Generate temporary symlinks to private files without using any database
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.5
README
If you have a private file and want to give access to it for a short period, this package helps you create a temporary link to this file. It doesn't need a database and works just by symlinks. Users can directly access a private file with a direct link that is randomly generated. A scheduled task will delete expired links.
Installation
You can install the package via composer:
composer require rezaf-dev/laravel-temp-link
You can publish the config file with:
php artisan vendor:publish --tag="laravel-temp-link-config"
This is the contents of the published config file:
return [ 'temp_link_path' => '/temp', 'disk' => 'public', 'scheduler' => true, ];
Usage
You can use TempLink Facade to generate a new link:
user \RezafDev\LaravelTempLink\Facades; echo TempLink::generateTempLink('path/to/private/file.txt', 3600); // http://127.0.0.1:8000/storage/16435/325/61f6430b18189.txt
You need to set laravel scheduler to run regularly to remove expired links. Please note that if you run a cron job every 10 minutes, you shouldn't generate links with an expiration time less than 10 minutes (You can, but it doesn't work).
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
You can also run this command manually to remove the expired links:
php artisan templink:delete
If you want to schedule this command yourself, you can set "scheduler" config to false.
To make the deletion more efficient, you should not generate links with less than 100 seconds expiration time.
Testing
./vendor/bin/phpunit
Changelog
Please see CHANGELOG for more information on what has changed recently.
License
The MIT License (MIT). Please see License File for more information.