diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 9dfadde1b7e9..20b8478d2acf 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -1,5 +1,7 @@ path() != 'get_started') { // https://gist.github.com/jrmadsen67/bd0f9ad0ef1ed6bb594e @@ -82,6 +82,40 @@ class Handler extends ExceptionHandler } } + if($this->isHttpException($e)) + { + switch ($e->getStatusCode()) + { + // not found + case 404: + if($request->header('X-Ninja-Token') != '') { + //API request which has hit a route which does not exist + + $error['error'] = ['message'=>'Route does not exist']; + $error = json_encode($error, JSON_PRETTY_PRINT); + $headers = Utils::getApiHeaders(); + + return response()->make($error, 404, $headers); + + } + break; + + // internal error + case '500': + if($request->header('X-Ninja-Token') != '') { + //API request which produces 500 error + + $error['error'] = ['message'=>'Internal Server Error']; + $error = json_encode($error, JSON_PRETTY_PRINT); + $headers = Utils::getApiHeaders(); + + return response()->make($error, 500, $headers); + } + break; + + } + } + // In production, except for maintenance mode, we'll show a custom error screen if (Utils::isNinjaProd() && !Utils::isDownForMaintenance() diff --git a/app/Http/Requests/EntityRequest.php b/app/Http/Requests/EntityRequest.php index 94dae7a443dd..9e2554119160 100644 --- a/app/Http/Requests/EntityRequest.php +++ b/app/Http/Requests/EntityRequest.php @@ -1,5 +1,7 @@ entityType); - if (method_exists($class, 'trashed')) { - $this->entity = $class::scope($publicId)->withTrashed()->firstOrFail(); - } else { - $this->entity = $class::scope($publicId)->firstOrFail(); + try { + + if (method_exists($class, 'trashed')) { + $this->entity = $class::scope($publicId)->withTrashed()->firstOrFail(); + } else { + $this->entity = $class::scope($publicId)->firstOrFail(); + } + + } + catch(ModelNotFoundException $e) { + + if(Request::header('X-Ninja-Token') != '') { + + $error['error'] = ['message'=>trans('texts.client_not_found')]; + $error = json_encode($error, JSON_PRETTY_PRINT); + $headers = Utils::getApiHeaders(); + + return response()->make($error, 400, $headers); + + } } return $this->entity;