benxmy / laravel-dual-use-signed-url
Laravel Dual Use Signed URL
Requires
- php: ^7.1
- illuminate/support: ^5.6|^6.0
Requires (Dev)
- orchestra/testbench: 3.8.*
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2025-05-11 01:45:20 UTC
README
This is a fork of Laravel Single Use Signed URL. This version allows two accesses to the generated URL. This package was created specifically for signed URLs that can be used as a temporary src
url for media files. Due to the way browsers often handle these urls, the request will be made twice -- once for a preflight request and the second time for the actual file. This implementation allows for the url to be used twice in quick succession, but then the url will become unavailable. The url generated will only be available to the user who generates it and an expiration time can be set for the url usage. A future update will include the optional paramater of 'uses_allowed' so the number of times the url is used can be set dynamically.
Installation
You can install the package via composer:
composer require benxmy/laravel-dual-use-signed-url
Run php artisan migrate
after you install.
Usage
I originally forked this from Laravel Single Use Signed URL so I could make it more difficult for someone to actually access a direct download link for an embedded src
attribute url. The original package is quite useful for single-use URLs for password resets, etc.
First create a route that accepts a {user} as a parameter and give it a name. For example:
Route::get('/play-media/{user}', [DualUseSignedUrlController::class, 'handle']) ->name('dual-use-url') ->middleware('validateDualUseSignedUrl');
The above route can be whatever you want really. The package will append the extra paramaeters in the background. For example, you could create a route like: Route::get('/play-media/{user}/{media}', ...)
. However, you must include the {user}
as the first parameter in the route.
Then in a controller you can generate a dual use signed url to this route with the following:
$url = DualUseSignedUrl::make('dual-use-url', $userId, $expiresInMinutes);
For my use (as the src
attribute), I can then simply pass the $url
to the view and use it in the audio or video tag.
Testing
Tests are not working right now.
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
- This customization: benxmy
- Original package by: Intellow
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
Laravel Package Boilerplate
This package was generated using the Laravel Package Boilerplate.