И какая там более сложная нечитаемая логика? %% public function handle($request, Closure $next, $roles) { if (!is_array($roles)) { $roles = explode(self::DELIMITER, $roles); } if ($this->auth->guest() || !$request->user()->hasRole($roles)) { abort(403); } return $next($request); } %% Тут же все элементарно.