rezaf-dev/laravel-temp-link

Generate temporary symlinks to private files without using any database

v1.0.1 2022-01-30 09:45 UTC

This package is auto-updated.

Last update: 2024-09-29 05:57:03 UTC


README

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

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.