benxmy/laravel-dual-use-signed-url

Laravel Dual Use Signed URL

Downloads

10

Stars

0

Version

0.2.1

Description

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

License

The MIT License (MIT). Please see License File for more information.

Laravel Package Boilerplate

This package was generated using the Laravel Package Boilerplate.

benxmy

Author

benxmy