Bonjour à tous,

J'utilise depuis peu le handler d'exception de Laravel (v9)
Je rencontre un problème et j'avoue que je ne sais pas comment le régler, je ne comprends pas trop.

J'ai donc modifié le fichier app/Exceptions/Handler.php comme ceci :

<?php

namespace App\Exceptions;

use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Support\Facades\Http;
use Throwable;

class Handler extends ExceptionHandler
{
    /**
     * A list of exception types with their corresponding custom log levels.
     *
     * @var array<class-string<\Throwable>, \Psr\Log\LogLevel::*>
     */
    protected $levels = [
        //
    ];

    /**
     * A list of the exception types that are not reported.
     *
     * @var array<int, class-string<\Throwable>>
     */
    protected $dontReport = [
        AuthenticationException::class,
    ];

    /**
     * A list of the inputs that are never flashed to the session on validation exceptions.
     *
     * @var array<int, string>
     */
    protected $dontFlash = [
        'current_password',
        'password',
        'password_confirmation',
    ];

    /**
     * Register the exception handling callbacks for the application.
     *
     * @return void
     */
    public function register()
    {
        $this->reportable(function (Throwable $e) {

        });
    }

    /**
     * Report or log an exception.
     *
     * @param  \Throwable  $e
     * @return void
     *
     * @throws \Throwable
     */
    public function report(Throwable $e)
    {
        if ($this->shouldReport($e) == true) {
            $rootPath = str_replace("\\", '/', base_path());
            $fileName = str_replace($rootPath, '', $e->getFile());

            $traces = array_slice($e->getTrace(), 0, 5);

            $textTrace = '';

            foreach ($traces as $trace) {
                $file = str_replace("\\", '/', $trace['file']);
                $file = str_replace($rootPath, '', $file);
                $textTrace .= "{$file}:{$trace['line']} ({$trace['function']})\n";
            }

            Http::post(env("ERRORS_WEBHOOK"), [
                "embeds" => [
                    [
                        "title" => "Rapport d'erreur Web",
                        "description" => "{$e->getMessage()} \n\n > Ligne **{$e->getLine()}** du fichier {$fileName}",
                        "color" => hexdec("2a2d30"),
                        "timestamp" => date("c"),
                        "fields" => [
                            [
                                "name" => "Trace",
                                "value" => "```{$textTrace}```"
                            ]
                        ]
                    ]
                ]
            ]);
        }

        parent::report($e);
    }

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Throwable  $e
     * @return \Symfony\Component\HttpFoundation\Response
     *
     * @throws \Throwable
     */
    public function render($request, Throwable $e)
    {
        if ($this->shouldReport($e)) {
            return response()->view("errors.custom", [
                "type" => "OOPS!",
                "title" => "Une erreur interne est survenue",
                "message" => "Il me semblerait que quelque chose se soit mal passé... Venez nous le signaler sur notre Discord !"
            ], 500);
        }

        parent::render($request, $e);
    }
}

Dans l'état actuel ça me prend n'importe quelle exception, et si je vais dans une route où on doit être authentifié avec le render ça met le rendu, mais si je l'enlève ça me met une erreur du type :

Attempt to read property "headers" on null

Ligne 191 du fichier E:\xampp\htdocs\beggin_panel_v2\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php

Et je ne comprends pas mais il se déclenche soit tout le temps soit jamais...
Il est censé normalement se déclencher seulement lorsqu'il y a des exceptions hors du $dontReport logiqment.

En soit, ce que j'aimerai dans mon cas c'est que les exceptions liées à l'authentification soit ignorées, car elle sont gérées via le middleware Authentificate, mais il prend le dessus je ne sais comment ni pourquoi, et le handler me permettrai d'afficher ma view custom dans les autres cas, auriez-vous une idée ?

Merci

Aucune réponse