Viewing file: CustomErrorPageAnalyzer.php (2.43 KB) -rwxrwxrwx Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Enlightn\Enlightn\Analyzers\Reliability;
use Enlightn\Enlightn\Analyzers\Concerns\AnalyzesMiddleware; use Illuminate\Contracts\Http\Kernel; use Illuminate\Filesystem\Filesystem; use Illuminate\Routing\Router;
class CustomErrorPageAnalyzer extends ReliabilityAnalyzer { use AnalyzesMiddleware;
/** * The title describing the analyzer. * * @var string|null */ public $title = "Your application defines custom error page views.";
/** * The severity of the analyzer. * * @var string|null */ public $severity = self::SEVERITY_MINOR;
/** * The time to fix in minutes. * * @var int|null */ public $timeToFix = 60;
/** * Determine whether the analyzer should be run in CI mode. * * @var bool */ public static $runInCI = false;
/** * Create a new analyzer instance. * * @param \Illuminate\Routing\Router $router * @param \Illuminate\Contracts\Http\Kernel $kernel * @return void */ public function __construct(Router $router, Kernel $kernel) { $this->router = $router; $this->kernel = $kernel; }
/** * Get the error message describing the analyzer insights. * * @return string */ public function errorMessage() { return "Your application does not customize its error pages. This may hamper user experience and also exposes " ."your application to fingerprinting, which means potential attackers can identify Laravel as your framework."; }
/** * Execute the analyzer. * * @param \Illuminate\Filesystem\Filesystem $files * @return void */ public function handle(Filesystem $files) { $hasCustomErrorPages = collect(config('view.paths'))->contains(function ($viewPath, $_) use ($files) { return $files->exists($viewPath.DIRECTORY_SEPARATOR.'errors'.DIRECTORY_SEPARATOR.'404.blade.php'); });
if (! $hasCustomErrorPages) { $this->markFailed(); } }
/** * Determine whether to skip the analyzer. * * @return bool * @throws \ReflectionException */ public function skip() { // Skip this analyzer if the app is stateless. We assume here that if the app is stateless, it's probably not // a web app and therefore, does not need to define any views. return $this->appIsStateless(); } }
|