> */ protected $dontReport = [ NotFoundException::class, StoppedAuthenticationException::class, ]; /** * A list of the inputs that are never flashed to the session on validation exceptions. * * @var array */ protected $dontFlash = [ 'current_password', 'password', 'password_confirmation', ]; /** * Report or log an exception. * * @param \Throwable $exception * * @throws \Throwable * * @return void */ public function report(Throwable $exception) { parent::report($exception); } /** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param Exception $e * * @return \Illuminate\Http\Response */ public function render($request, Throwable $e) { if ($this->isApiRequest($request)) { return $this->renderApiException($e); } return parent::render($request, $e); } /** * Check if the given request is an API request. */ protected function isApiRequest(Request $request): bool { return strpos($request->path(), 'api/') === 0; } /** * Render an exception when the API is in use. */ protected function renderApiException(Throwable $e): JsonResponse { $code = 500; $headers = []; if ($e instanceof HttpExceptionInterface) { $code = $e->getStatusCode(); $headers = $e->getHeaders(); } if ($e instanceof ModelNotFoundException) { $code = 404; } $responseData = [ 'error' => [ 'message' => $e->getMessage(), ], ]; if ($e instanceof ValidationException) { $responseData['error']['message'] = 'The given data was invalid.'; $responseData['error']['validation'] = $e->errors(); $code = $e->status; } $responseData['error']['code'] = $code; return new JsonResponse($responseData, $code, $headers); } /** * Convert an authentication exception into an unauthenticated response. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Auth\AuthenticationException $exception * * @return \Illuminate\Http\Response */ protected function unauthenticated($request, AuthenticationException $exception) { if ($request->expectsJson()) { return response()->json(['error' => 'Unauthenticated.'], 401); } return redirect()->guest('login'); } /** * Convert a validation exception into a JSON response. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Validation\ValidationException $exception * * @return \Illuminate\Http\JsonResponse */ protected function invalidJson($request, ValidationException $exception) { return response()->json($exception->errors(), $exception->status); } }