From 2c83b4ee256006939c668c258959b955b7e0516d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Thu, 30 Mar 2023 18:14:03 +0200 Subject: [PATCH 1/6] Coerce the string to array if empty string passed for `design` --- app/Http/Requests/Design/StoreDesignRequest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Requests/Design/StoreDesignRequest.php b/app/Http/Requests/Design/StoreDesignRequest.php index 15e9cabd8bf9..6872a51e19ed 100644 --- a/app/Http/Requests/Design/StoreDesignRequest.php +++ b/app/Http/Requests/Design/StoreDesignRequest.php @@ -39,6 +39,7 @@ class StoreDesignRequest extends Request public function prepareForValidation() { $input = $this->all(); + $input['design'] = is_array($input['design']) ? $input['design'] : []; if (! array_key_exists('product', $input['design']) || is_null($input['design']['product'])) { $input['design']['product'] = ''; From 7c4c39bfc47a1bf49c9be553b0fd381c2534641d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Fri, 31 Mar 2023 13:19:08 +0200 Subject: [PATCH 2/6] Change default DesignFactory to return [] --- app/Factory/DesignFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Factory/DesignFactory.php b/app/Factory/DesignFactory.php index e1f2010f11c4..ffb700b04461 100644 --- a/app/Factory/DesignFactory.php +++ b/app/Factory/DesignFactory.php @@ -24,7 +24,7 @@ class DesignFactory $design->is_active = true; $design->is_custom = true; $design->name = ''; - $design->design = ''; + $design->design = []; return $design; } From 7da0c6e74b11a4b800be4d25e62d1f08b3547202 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Fri, 31 Mar 2023 13:20:14 +0200 Subject: [PATCH 3/6] Validate each design block --- app/Http/Requests/Design/StoreDesignRequest.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Http/Requests/Design/StoreDesignRequest.php b/app/Http/Requests/Design/StoreDesignRequest.php index 6872a51e19ed..d233c2b06514 100644 --- a/app/Http/Requests/Design/StoreDesignRequest.php +++ b/app/Http/Requests/Design/StoreDesignRequest.php @@ -33,6 +33,10 @@ class StoreDesignRequest extends Request //'name' => 'required', 'name' => 'required|unique:designs,name,null,null,company_id,'.auth()->user()->companyId(), 'design' => 'required', + 'design.header' => 'required|min:1', + 'design.body' => 'required|min:1', + 'design.footer' => 'required|min:1', + 'design.includes' => 'required|min:1', ]; } From 1e1aa5d166466a4aa8202033ea6108720f4118b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Fri, 31 Mar 2023 13:28:33 +0200 Subject: [PATCH 4/6] Construct design.design from data class --- app/DataProviders/DesignBlocks.php | 24 ++++++++++++++++++++++++ app/Factory/DesignFactory.php | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 app/DataProviders/DesignBlocks.php diff --git a/app/DataProviders/DesignBlocks.php b/app/DataProviders/DesignBlocks.php new file mode 100644 index 000000000000..5a85d7284f10 --- /dev/null +++ b/app/DataProviders/DesignBlocks.php @@ -0,0 +1,24 @@ +is_active = true; $design->is_custom = true; $design->name = ''; - $design->design = []; + $design->design = new DesignBlocks(); return $design; } From a05a23bdb7a478c21fdc89d9acc515ff875edb2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 3 Apr 2023 15:35:55 +0200 Subject: [PATCH 5/6] Prevent undefined array key --- app/Http/Requests/Design/StoreDesignRequest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Requests/Design/StoreDesignRequest.php b/app/Http/Requests/Design/StoreDesignRequest.php index 1ecdb2958e3d..26374234c6ae 100644 --- a/app/Http/Requests/Design/StoreDesignRequest.php +++ b/app/Http/Requests/Design/StoreDesignRequest.php @@ -32,7 +32,7 @@ class StoreDesignRequest extends Request return [ //'name' => 'required', 'name' => 'required|unique:designs,name,null,null,company_id,'.auth()->user()->companyId(), - 'design' => 'required|array', + 'design' => 'required', 'design.header' => 'required|min:1', 'design.body' => 'required|min:1', 'design.footer' => 'required|min:1', @@ -43,7 +43,7 @@ class StoreDesignRequest extends Request public function prepareForValidation() { $input = $this->all(); - $input['design'] = is_array($input['design']) ? $input['design'] : []; + $input['design'] = (isset($input['design']) && is_array($input['design'])) ? $input['design'] : []; if (! array_key_exists('product', $input['design']) || is_null($input['design']['product'])) { $input['design']['product'] = ''; From 44f21cef143f2046f935fb6ed306b66af64ea36c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 3 Apr 2023 15:36:36 +0200 Subject: [PATCH 6/6] Add `array` check --- app/Http/Requests/Design/StoreDesignRequest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Requests/Design/StoreDesignRequest.php b/app/Http/Requests/Design/StoreDesignRequest.php index 26374234c6ae..2af551664c66 100644 --- a/app/Http/Requests/Design/StoreDesignRequest.php +++ b/app/Http/Requests/Design/StoreDesignRequest.php @@ -32,7 +32,7 @@ class StoreDesignRequest extends Request return [ //'name' => 'required', 'name' => 'required|unique:designs,name,null,null,company_id,'.auth()->user()->companyId(), - 'design' => 'required', + 'design' => 'required|array', 'design.header' => 'required|min:1', 'design.body' => 'required|min:1', 'design.footer' => 'required|min:1',