ldc-legaulois/app/Exceptions/Handler.php

83 lines
2.2 KiB
PHP
Raw Permalink Normal View History

2020-07-23 10:29:36 +02:00
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
2026-09-25 16:25:31 +02:00
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Validation\ValidationException;
2024-01-10 14:49:46 +01:00
use Throwable;
2020-07-23 10:29:36 +02:00
class Handler extends ExceptionHandler
{
2024-01-10 14:49:46 +01:00
/**
* A list of exception types with their corresponding custom log levels.
*
* @var array<class-string<\Throwable>, \Psr\Log\LogLevel::*>
*/
protected $levels = [];
2020-07-23 10:29:36 +02:00
/**
* A list of the exception types that are not reported.
*
2024-01-10 14:49:46 +01:00
* @var array<int, class-string<\Throwable>>
2020-07-23 10:29:36 +02:00
*/
2024-01-10 14:49:46 +01:00
protected $dontReport = [];
2020-07-23 10:29:36 +02:00
/**
2024-01-10 14:49:46 +01:00
* A list of the inputs that are never flashed to the session on validation exceptions.
2020-07-23 10:29:36 +02:00
*
2024-01-10 14:49:46 +01:00
* @var array<int, string>
2020-07-23 10:29:36 +02:00
*/
protected $dontFlash = [
2024-01-10 14:49:46 +01:00
'current_password',
2020-07-23 10:29:36 +02:00
'password',
'password_confirmation',
];
/**
2024-01-10 14:49:46 +01:00
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
2024-01-10 14:49:46 +01:00
$this->reportable(function (Throwable $e) {
if (app()->bound('sentry')) {
app('sentry')->captureException($e);
}
});
}
2026-06-11 10:47:10 +02:00
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function render($request, Throwable $e)
{
if ($request->expectsJson()) {
2026-09-25 16:25:31 +02:00
if ($e instanceof HttpResponseException) {
2026-06-11 10:47:10 +02:00
return parent::render($request, $e);
}
2026-09-25 16:25:31 +02:00
if ($e instanceof ValidationException && $request->ajax()) {
2026-06-24 14:48:35 +02:00
return response()->json([
'message' => $e->getMessage(),
2026-09-25 16:25:31 +02:00
'errors' => $e->errors(),
2026-06-24 14:48:35 +02:00
], $e->status);
}
2026-06-11 10:47:10 +02:00
$status = method_exists($e, 'getStatusCode') ? $e->getStatusCode() : 500;
return response()->json([
'message' => $status === 500
? 'Une erreur est survenue, veuillez réessayer plus tard.'
: $e->getMessage(),
], $status);
}
return parent::render($request, $e);
}
2020-07-23 10:29:36 +02:00
}