Download the PHP package ephort/laravel-data-authorization without Composer
On this page you can find all versions of the php package ephort/laravel-data-authorization. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download ephort/laravel-data-authorization
More information about ephort/laravel-data-authorization
Files in ephort/laravel-data-authorization
Package laravel-data-authorization
Short Description Add authorization to your data
License MIT
Homepage https://github.com/ephort/laravel-data-authorization
Informations about the package laravel-data-authorization
Add authorization to your spatie/laravel-data
objects
This package adds authorization to your spatie/laravel-data
objects, which
is very useful if you want to expose data objects to the frontend (e.g. when using Inertia), but still need to check
if the user is allowed to perform certain actions.
Installation
Install the package via composer:
Usage
This package is intended to be used with Inertia, but does not require it or depend on it.
To add the authorization checks to your data objects, extend the DataWithAuthorization
class.
All the methods of the base Data
class are still available.
Next, implement the static getAuthorizations
method, which should return an array containing the
names of the actions that need to be exposed and checked.
When the data object is transformed, a lazy authorization
property is appended to the resulting array.
This property contains a key for each defined policy action and is evaluated by Gate::allows
.
Avoid processing authorizations
Because the authorization
property is lazy, we can exclude it from the data object to avoid calling the gate on every
serialization.
Or use the built-in helper method:
Note when using custom from
methods
When using
a custom from
method,
the pipeline that resolves authorizations is not used.
This means you must call the static resolveAuthorizationArray
method manually when instantiating your
data object:
You can also wrap the authorization
array in a Lazy property if needed:
TypeScript support
Thanks to Spatie, it's very easy to generate TypeScript interfaces from data objects and enums.
Install the TypeScript Transformer package and publish its
configuration file:
Open config/typescript-transformer.php
and add the following collector and transformer:
Ephort\LaravelDataAuthorization\Collectors\DataAuthorizationTypeScriptCollector::class
must be the first collector.
The above configuration uses a collector provided by this package, which finds data objects that
extend DataWithAuthorization
and generates typings with their authorizations. This is what powers typed authorization
support.
Testing
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
The code is primarily copied from the awesome project Hybridly by Enzo Innocenzi, which is a great alternative to Inertia.
- Peter Brinck
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of laravel-data-authorization with dependencies
illuminate/contracts Version ^10.0||^11.0
spatie/laravel-data Version ^4.6
spatie/laravel-package-tools Version ^1.16
spatie/laravel-typescript-transformer Version ^2.4