From 55ee90b25dd2e7299e2ab8f9f6dd8961cb00a81e Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 18 Jul 2019 14:32:23 -0700 Subject: [PATCH] Fixes #7252 form request changes (#7272) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fixes for #7252 - custom fields not validating / no validaton messages in API w/form requests * Removed debug info * More fixes for #7252 This is mostly working as intended, if not yet the way Laravel wants us to do it. Right now, the API returns correctly, and the form UI will return highlighted errors, with the input filled in ~sometimes~. I’m not sure why it’s only sometimes yet, but this is potentially progress. * Removed experimental method * Check for digits_between:0,240 for warranty * Removed debug code --- app/Exceptions/Handler.php | 11 +---------- app/Http/Requests/AssetRequest.php | 27 ++++++++++++--------------- app/Http/Requests/SaveUserRequest.php | 7 +++++-- app/Models/Asset.php | 2 +- 4 files changed, 19 insertions(+), 28 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 0475b91b40..a82d983cf5 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -67,10 +67,6 @@ class Handler extends ExceptionHandler return response()->json(Helper::formatStandardApiResponse('error', null, $className . ' not found'), 200); } - if ($e instanceof \Illuminate\Validation\ValidationException) { - return response()->json(Helper::formatStandardApiResponse('error', null, $e->response['messages'], 400)); - } - if ($this->isHttpException($e)) { $statusCode = $e->getStatusCode(); @@ -85,11 +81,6 @@ class Handler extends ExceptionHandler } } - // Try to parse 500 Errors in a bit nicer way when debug is enabled. - if (config('app.debug')) { - return response()->json(Helper::formatStandardApiResponse('error', null, "An Error has occured! " . $e->getMessage()), 500); - } - } @@ -128,6 +119,6 @@ class Handler extends ExceptionHandler */ protected function invalidJson($request, ValidationException $exception) { - return response()->json($exception->errors(), $exception->status); + return response()->json(Helper::formatStandardApiResponse('error', null, $exception->errors(), 400)); } } diff --git a/app/Http/Requests/AssetRequest.php b/app/Http/Requests/AssetRequest.php index 8228529aed..1934f8254e 100644 --- a/app/Http/Requests/AssetRequest.php +++ b/app/Http/Requests/AssetRequest.php @@ -4,7 +4,7 @@ namespace App\Http\Requests; use App\Models\AssetModel; use Session; - +use Illuminate\Http\Exceptions\HttpResponseException; use Illuminate\Contracts\Validation\Validator; @@ -32,7 +32,7 @@ class AssetRequest extends Request 'model_id' => 'required|integer|exists:models,id', 'status_id' => 'required|integer|exists:status_labels,id', 'company_id' => 'integer|nullable', - 'warranty_months' => 'numeric|nullable', + 'warranty_months' => 'numeric|nullable|digits_between:0,240', 'physical' => 'integer|nullable', 'checkout_date' => 'date', 'checkin_date' => 'date', @@ -48,7 +48,7 @@ class AssetRequest extends Request $rules['asset_tag'] = ($settings->auto_increment_assets == '1') ? 'max:255' : 'required'; - if($this->request->get('model_id') != '') { + if ($this->request->get('model_id') != '') { $model = AssetModel::find($this->request->get('model_id')); if (($model) && ($model->fieldset)) { @@ -60,13 +60,6 @@ class AssetRequest extends Request } - public function response(array $errors) - { - $this->session()->flash('errors', Session::get('errors', new \Illuminate\Support\ViewErrorBag) - ->put('default', new \Illuminate\Support\MessageBag($errors))); - \Input::flash(); - return parent::response($errors); - } /** * Handle a failed validation attempt. @@ -76,13 +69,17 @@ class AssetRequest extends Request * @param \Illuminate\Contracts\Validation\Validator $validator * @return void * - * @throws \Illuminate\Validation\ValidationException + * @throws \Illuminate\Http\Exceptions\HttpResponseException */ protected function failedValidation(Validator $validator) { - return response()->json([ - 'message' => 'The given data is invalid', - 'errors' => $validator->errors() - ], 422); + $this->session()->flash('errors', Session::get('errors', new \Illuminate\Support\ViewErrorBag) + ->put('default', new \Illuminate\Support\MessageBag($validator->errors()->toArray()))); + \Input::flash(); + throw new HttpResponseException(response()->json([ + 'status' => 'error', + 'messages' => $validator->errors(), + 'payload' => null + ], 422)); } } diff --git a/app/Http/Requests/SaveUserRequest.php b/app/Http/Requests/SaveUserRequest.php index 57dc455195..0de6a3bc02 100644 --- a/app/Http/Requests/SaveUserRequest.php +++ b/app/Http/Requests/SaveUserRequest.php @@ -2,10 +2,12 @@ namespace App\Http\Requests; -use App\Http\Requests\Request; use App\Models\Setting; +use Illuminate\Http\Exceptions\HttpResponseException; +use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Contracts\Validation\Validator; -class SaveUserRequest extends Request +class SaveUserRequest extends FormRequest { /** * Determine if the user is authorized to make this request. @@ -62,4 +64,5 @@ class SaveUserRequest extends Request return $rules; } + } diff --git a/app/Models/Asset.php b/app/Models/Asset.php index be860e157e..71d9029160 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -75,7 +75,7 @@ class Asset extends Depreciable 'model_id' => 'required|integer|exists:models,id', 'status_id' => 'required|integer|exists:status_labels,id', 'company_id' => 'integer|nullable', - 'warranty_months' => 'numeric|nullable|max:240', + 'warranty_months' => 'numeric|nullable|digits_between:0,240', 'physical' => 'numeric|max:1|nullable', 'checkout_date' => 'date|max:10|min:10|nullable', 'checkin_date' => 'date|max:10|min:10|nullable',