I just found a pretty clean way, I think on your routes you pass middleware and policies that need to be checked.
Code example:
<?php
namespace App\Http\Middleware;
use Closure;
class PolicyMiddleware
{
public function handle($request, Closure $next, $policy)
{
if (! $request->user()->can($policy)) {
}
return $next($request);
}
}
:
Route::put('post/{id}', ['middleware' => 'policy:policytobechecked', function ($id) {
}]);