From 321367b974268f23359ab2ad92284c559c262998 Mon Sep 17 00:00:00 2001 From: Ivan Nieto Vivanco Date: Wed, 22 Jun 2022 21:06:07 -0500 Subject: [PATCH] Adds validation to custom fields' default values --- .../Controllers/AssetModelsController.php | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 9a7c1407bc..29d7ceee95 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -8,6 +8,7 @@ use App\Models\AssetModel; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\View; +use Illuminate\Support\Facades\Validator; use Redirect; use Request; use Storage; @@ -90,7 +91,9 @@ class AssetModelsController extends Controller // Was it created? if ($model->save()) { if ($this->shouldAddDefaultValues($request->input())) { - $this->assignCustomFieldsDefaultValues($model, $request->input('default_values')); + if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ + return redirect()->back()->withInput()->withErrors($model->getErrors()); + } } // Redirect to the new model page @@ -163,7 +166,9 @@ class AssetModelsController extends Controller $model->fieldset_id = $request->input('custom_fieldset'); if ($this->shouldAddDefaultValues($request->input())) { - $this->assignCustomFieldsDefaultValues($model, $request->input('default_values')); + if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ + return redirect()->back()->withInput()->withErrors("Error"); + } } } @@ -451,6 +456,21 @@ class AssetModelsController extends Controller */ private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues) { + $data = array(); + foreach ($defaultValues as $customFieldId => $defaultValue) { + $customField = \App\Models\CustomField::find($customFieldId); + + $data[$customField->db_column] = $defaultValue; + } + + $rules = $model->fieldset->validation_rules(); + + $validator = Validator::make($data, $rules); + + if($validator->fails()){ + return false; + } + foreach ($defaultValues as $customFieldId => $defaultValue) { if(is_array($defaultValue)){ $model->defaultValues()->attach($customFieldId, ['default_value' => implode(', ', $defaultValue)]); @@ -458,6 +478,7 @@ class AssetModelsController extends Controller $model->defaultValues()->attach($customFieldId, ['default_value' => $defaultValue]); } } + return true; } /**