Download the PHP package bekwoh/laravel-media-secure without Composer
On this page you can find all versions of the php package bekwoh/laravel-media-secure. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download bekwoh/laravel-media-secure
More information about bekwoh/laravel-media-secure
Files in bekwoh/laravel-media-secure
Package laravel-media-secure
Short Description Securely display Media
License MIT
Homepage https://github.com/cleaniquecoders/laravel-media-secure
Informations about the package laravel-media-secure
Secure Your Media Access
You have documents, but want to limit the access to only logged in users, and also have some other sophisticated / complex rules in order to access the documents, then this package is for you.
This package will securely display or download to your media files.
Installation
You can install the package via composer:
Publish the config file with:
Usage
In case you want more control on who are able to access to the media, you can use the Laravel Policy. You just need to define the policy, then it's done. This package will use the policy to handle more sophisticated and complex rules accessing to your media files.
Make sure you are using Laravel Medialibrary package.
When the require_auth
configuration is enabled ('require_auth' => true
), the use who want to access to the media require to login.
When the strict
configuration is enabled ('strict' => true
), the parent model of the media ($media->model
) is required to have its own policy registered.
This policy must define the access methods:
view
stream
download
These methods will be used by MediaPolicy
to determine whether the user is authorised to access the media.
Why Is This Required?
Since Spatie's Media Library uses polymorphic relationships, media items are attached to various parent models (e.g., Document
, Post
, User
, etc.).
To enforce fine-grained control, MediaPolicy
delegates authorisation checks to the parent model’s policy.
What You Must Do
- Create a policy for the parent model (e.g.,
DocumentPolicy
). -
Define the following methods in that policy:
view(User $user, Document $document)
stream(User $user, Document $document)
download(User $user, Document $document)
Example: DocumentPolicy
These methods must be defined because
MediaPolicy
uses the value from theMediaAccess
enum to callGate::allows($type, $media->model)
.
Register the Policy
In your AuthServiceProvider
:
What Happens If No Policy Exists?
Condition | Result |
---|---|
strict = true |
Access will be denied if the parent model doesn't have a policy |
strict = false |
Access will be granted without checking the parent model's policy |
Summary
Requirement | Mandatory | When |
---|---|---|
Parent model has a policy | ✅ | When strict = true |
Defines view , stream , download methods |
✅ | For enum-based access control |
Policy registered in AuthServiceProvider |
✅ | Required by Laravel's Gate system |
Helpers
You upload / add media as documented in Laravel Medialibrary. Then to generate links:
Testing
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- Nasrul Hazim Bin Mohamad
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of laravel-media-secure with dependencies
cleaniquecoders/traitify Version ^1.1
illuminate/contracts Version ^11.0 | ^12.0
spatie/laravel-medialibrary Version ^10.5 | ^11.5
spatie/laravel-package-tools Version ^1.14.0