X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/b9a58859a4ef14b7971ca7d07318e1ac6f276b40..refs/pull/4467/head:/app/Exceptions/Handler.php diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 3b4ad4a4d..36bdf845d 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -4,11 +4,12 @@ namespace BookStack\Exceptions; use Exception; use Illuminate\Auth\AuthenticationException; +use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Validation\ValidationException; -use Symfony\Component\HttpKernel\Exception\HttpException; +use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; use Throwable; class Handler extends ExceptionHandler @@ -16,16 +17,17 @@ class Handler extends ExceptionHandler /** * A list of the exception types that are not reported. * - * @var array + * @var array> */ protected $dontReport = [ NotFoundException::class, + StoppedAuthenticationException::class, ]; /** - * A list of the inputs that are never flashed for validation exceptions. + * A list of the inputs that are never flashed to the session on validation exceptions. * - * @var array + * @var array */ protected $dontFlash = [ 'current_password', @@ -75,15 +77,20 @@ class Handler extends ExceptionHandler /** * Render an exception when the API is in use. */ - protected function renderApiException(Exception $e): JsonResponse + protected function renderApiException(Throwable $e): JsonResponse { - $code = $e->getCode() === 0 ? 500 : $e->getCode(); + $code = 500; $headers = []; - if ($e instanceof HttpException) { + + if ($e instanceof HttpExceptionInterface) { $code = $e->getStatusCode(); $headers = $e->getHeaders(); } + if ($e instanceof ModelNotFoundException) { + $code = 404; + } + $responseData = [ 'error' => [ 'message' => $e->getMessage(), @@ -91,6 +98,7 @@ class Handler extends ExceptionHandler ]; if ($e instanceof ValidationException) { + $responseData['error']['message'] = 'The given data was invalid.'; $responseData['error']['validation'] = $e->errors(); $code = $e->status; }