Laratrust\Laratrust::routeNeedsRoleOrPermission PHP Method

routeNeedsRoleOrPermission() public method

If the third parameter is null then abort with status code 403. Otherwise the $result is returned.
public routeNeedsRoleOrPermission ( string $route, array | string $roles, array | string $permissions, mixed $result = null, boolean $requireAll = false ) : void
$route string Route pattern. i.e: "admin/*"
$roles array | string The role(s) needed
$permissions array | string The permission(s) needed
$result mixed i.e: Redirect::to('/')
$requireAll boolean User must have all roles and permissions
return void
    public function routeNeedsRoleOrPermission($route, $roles, $permissions, $result = null, $requireAll = false)
    {
        $filterName = is_array($roles) ? implode('_', $roles) : $roles;
        $filterName .= '_' . (is_array($permissions) ? implode('_', $permissions) : $permissions);
        $filterName .= '_' . substr(md5($route), 0, 6);
        $closure = function () use($roles, $permissions, $result, $requireAll) {
            $hasRole = $this->hasRole($roles, $requireAll);
            $hasPerms = $this->can($permissions, $requireAll);
            if ($requireAll) {
                $hasRolePerm = $hasRole && $hasPerms;
            } else {
                $hasRolePerm = $hasRole || $hasPerms;
            }
            if (!$hasRolePerm) {
                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);
    }