diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index ac65a06d..3240d90b 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -5,6 +5,8 @@ use Exception; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundException; +use Illuminate\Validation\ValidationException as ValidationException; +use Symfony\Component\HttpKernel\Exception\HttpException; class Handler extends ExceptionHandler { @@ -47,13 +49,41 @@ public function report(Exception $exception) */ public function render($request, Exception $exception) { - if ($exception instanceof ModelNotFoundException) - { - return response()->json([ - 'message' => 'Resource not found', - ], 404); + if (!($exception instanceof ValidationException)) { + $response = [ + 'message' => (string)$exception->getMessage(), + 'status_code' => 400, + ]; + + if ($exception instanceof HttpException) { + $response['message'] = Response::$statusTexts[$exception->getStatusCode()]; + $response['status_code'] = $exception->getStatusCode(); + } else if ($exception instanceof ModelNotFoundException) { + $response['message'] = Response::$statusTexts[Response::HTTP_NOT_FOUND]; + $response['status_code'] = Response::HTTP_NOT_FOUND; + } + + if ($this->isDebugMode()) { + $response['debug'] = [ + 'exception' => get_class($exception), + 'trace' => $exception->getTrace() + ]; + // return parent::render($request, $exception); + } + + return response()->json($response, $response['status_code']); } return parent::render($request, $exception); } + + /** + * Determine if the application is in debug mode. + * + * @return Boolean + */ + public function isDebugMode() + { + return (boolean) env('APP_DEBUG'); + } }