diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index c18c43cc12..2506c9464c 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -13,7 +13,14 @@ class Handler extends ExceptionHandler * @var array */ protected $dontReport = [ - // + \Illuminate\Auth\AuthenticationException::class, + \Illuminate\Auth\Access\AuthorizationException::class, + \Symfony\Component\HttpKernel\Exception\HttpException::class, + \Illuminate\Database\Eloquent\ModelNotFoundException::class, + \Illuminate\Session\TokenMismatchException::class, + \Illuminate\Validation\ValidationException::class, + \Intervention\Image\Exception\NotSupportedException::class, + \League\OAuth2\Server\Exception\OAuthServerException::class, ]; /** @@ -34,8 +41,49 @@ class Handler extends ExceptionHandler */ public function register() { + + $this->reportable(function (Throwable $e) { - // - }); + + // CSRF token mismatch error + if ($e instanceof \Illuminate\Session\TokenMismatchException) { + return redirect()->back()->with('error', trans('general.token_expired')); + } + + + // Handle Ajax requests that fail because the model doesn't exist + if ($request->ajax() || $request->wantsJson()) { + + + if ($e instanceof \Illuminate\Database\Eloquent\ModelNotFoundException) { + $className = last(explode('\\', $e->getModel())); + return response()->json(Helper::formatStandardApiResponse('error', null, $className . ' not found'), 200); + } + + if ($this->isHttpException($e)) { + + $statusCode = $e->getStatusCode(); + + switch ($e->getStatusCode()) { + case '404': + return response()->json(Helper::formatStandardApiResponse('error', null, $statusCode . ' endpoint not found'), 404); + case '405': + return response()->json(Helper::formatStandardApiResponse('error', null, 'Method not allowed'), 405); + default: + return response()->json(Helper::formatStandardApiResponse('error', null, $statusCode), 405); + + } + } + } + + + if ($this->isHttpException($e) && (isset($statusCode)) && ($statusCode == '404' )) { + return response()->view('layouts/basic', [ + 'content' => view('errors/404') + ],$statusCode); + } + + return parent::render($request, $e); + }); } }