Skip to content

Add a per-request cache to Laravel's Gate

Notifications You must be signed in to change notification settings

rickselby/laravel-gate-cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Gate Cache

Software License Packagist Version

Add a per-request caching layer to Laravel's Gate.

Laravel Auto Presenter Mapper Laravel
3.x 5.5-11.x
2.x 5.5-5.8
1.x 5.5-5.7

Installing

Require the project using Composer:

$ composer require rickselby/laravel-gate-cache

Laravel will auto-discover the package.

Use Case

As discussed on reddit - multiple calls to Gate methods result in the underlying code being re-run. Take this pseudo-blade-code, for example:

@foreach($posts as $post)
    @can('add_posts') BUTTON @endcan
    @can('edit_posts') BUTTON @endcan
    @can('delete_posts') BUTTON @endcan
@endforeach

Normally, each permission check would be called as many times as there are posts. With this package, they will only be called once; their results will be cached for any further calls.

Note that this is per-request only. Each request will test each permission once... but only once.

License

Laravel Form Components is licensed under The MIT License (MIT).