public function routeNeedsPermission($route, $permissions, $result = null, $requireAll = true)
{
$filterName = is_array($permissions) ? implode('_', $permissions) : $permissions;
$filterName .= '_' . substr(md5($route), 0, 6);
$closure = function () use($permissions, $result, $requireAll) {
$hasPerm = $this->can($permissions, $requireAll);
if (!$hasPerm) {
return empty($result) ? $this->app->abort(403) : $result;
}
};
// Same as Route::filter, registers a new filter
$this->app->router->filter($filterName, $closure);
// Same as Route::when, assigns a route pattern to the
// previously created filter.
$this->app->router->when($route, $filterName);
}