fireworkweb / laravel-gates
Permission handling for Laravel using Gates with Route Names
Installs: 34 508
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 3
Forks: 2
Open Issues: 0
Requires
- php: ^7.3|^8.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.0|^10.0|^11.0
README
This package allows you to manage permissions using Gates with Route Names.
Installation
You can install the package via composer:
composer require fireworkweb/laravel-gates
Package Middlewares
This package comes 2 middlewares:
Gate
- Checks current route gates, if no matching gate, breaksGateOptional
- Checks current route gates, if no matching gate, logs
You can add them inside your app/Http/Kernel.php
file.
protected $routeMiddleware = [ // ... 'gate' => \Fireworkweb\Gates\Middlewares\Gate::class, 'gate_optional' => \Fireworkweb\Gates\Middlewares\GateOptional::class, ];
Usage
Here is an example:
Route::middleware('gate')->group(function () { // ... Route::get('posts/{post}/edit')->name('posts.edit'); });
<?php namespace App\Policies; use App\Post; use App\User; use Fireworkweb\Gates\Traits\HasGates; class PolicyWithResourceGates { use HasGates; protected static function gateRouteName() : string { return 'posts'; } protected static function gateAbilities() : array { return [ 'edit' => 'edit', ]; } public function edit(User $user, Post $post) { return $user->id === $post->user_id; } }
That will register a gate posts.edit
and on route posts/1/edit
it will check if you on App\Policies\Post@edit
injecting route parameters.
Commands
You have commands to help you find routes without gate:
# it will get the routes that has `gate` middleware fwd artisan gates:routes-without-gate # in case you are using a custom middleware name or want to check the optional one fwd artisan gates:routes-without-gate gate_optional
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email contact@fireworkweb.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.