From fb890fbc300c5ea964bca5d06f9a7edf715078b0 Mon Sep 17 00:00:00 2001 From: Brady Wetherington Date: Tue, 8 Feb 2022 12:05:05 -0800 Subject: [PATCH 1/2] Properly alert when invalid JSON is submitted to something that wants JSON --- app/Exceptions/Handler.php | 9 ++++++++- app/Http/Requests/Request.php | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 17a3682885..fbd120fe63 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -7,6 +7,7 @@ use App\Helpers\Helper; use Illuminate\Validation\ValidationException; use Log; use Throwable; +use JsonException; class Handler extends ExceptionHandler @@ -17,7 +18,7 @@ class Handler extends ExceptionHandler * @var array */ protected $dontReport = [ - // + JsonException::class ]; /** @@ -53,6 +54,12 @@ class Handler extends ExceptionHandler return redirect()->back()->with('error', trans('general.token_expired')); } + // Invalid JSON exception + // TODO: don't understand why we have to do this when we have the invalidJson() method, below, but, well, whatever + if ($e instanceof JsonException) { + return response()->json(Helper::formatStandardApiResponse('error', null, 'invalid JSON'), 422); + } + // Handle Ajax requests that fail because the model doesn't exist if ($request->ajax() || $request->wantsJson()) { diff --git a/app/Http/Requests/Request.php b/app/Http/Requests/Request.php index ff8f123b3d..7069cd563e 100644 --- a/app/Http/Requests/Request.php +++ b/app/Http/Requests/Request.php @@ -9,6 +9,14 @@ abstract class Request extends FormRequest { protected $rules = []; + public function json($key = null, $default = null) + { + if ($this->ajax() || $this->wantsJson()) { + json_decode($this->getContent(), false, 512, \JSON_THROW_ON_ERROR); // ignore output, just throw + } + return parent::json($key, $default); + } + public function rules() { return $this->rules; From c300e7c7f6ca632e6edd91e71df6a75d69a21ce6 Mon Sep 17 00:00:00 2001 From: Brady Wetherington Date: Tue, 8 Feb 2022 12:09:40 -0800 Subject: [PATCH 2/2] Remove extraneous backslash --- app/Http/Requests/Request.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Requests/Request.php b/app/Http/Requests/Request.php index 7069cd563e..e4562e275d 100644 --- a/app/Http/Requests/Request.php +++ b/app/Http/Requests/Request.php @@ -12,7 +12,7 @@ abstract class Request extends FormRequest public function json($key = null, $default = null) { if ($this->ajax() || $this->wantsJson()) { - json_decode($this->getContent(), false, 512, \JSON_THROW_ON_ERROR); // ignore output, just throw + json_decode($this->getContent(), false, 512, JSON_THROW_ON_ERROR); // ignore output, just throw } return parent::json($key, $default); }