From 5937414ad31fa2b7de1ba46532168cf389856664 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 11 Jun 2024 08:52:56 +1000 Subject: [PATCH] Add twig linting --- app/Http/Controllers/PreviewController.php | 1 - .../Requests/Preview/ShowPreviewRequest.php | 2 + app/Http/ValidationRules/Design/TwigLint.php | 44 +++++++++++++++++++ .../Transformer/Csv/ClientTransformer.php | 2 +- 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 app/Http/ValidationRules/Design/TwigLint.php diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php index 916d8dbc8ff7..8d47a49637b6 100644 --- a/app/Http/Controllers/PreviewController.php +++ b/app/Http/Controllers/PreviewController.php @@ -155,7 +155,6 @@ class PreviewController extends BaseController return response()->json(['message' => ctrans('texts.invalid_design_object')], 400); } - // $entity = ucfirst(request()->input('entity')); $entity = Str::camel(request()->input('entity')); $class = "App\Models\\$entity"; diff --git a/app/Http/Requests/Preview/ShowPreviewRequest.php b/app/Http/Requests/Preview/ShowPreviewRequest.php index cfe501316ba3..201e6b7d5259 100644 --- a/app/Http/Requests/Preview/ShowPreviewRequest.php +++ b/app/Http/Requests/Preview/ShowPreviewRequest.php @@ -12,6 +12,7 @@ namespace App\Http\Requests\Preview; use App\Http\Requests\Request; +use App\Http\ValidationRules\Design\TwigLint; use App\Utils\Traits\MakesHash; class ShowPreviewRequest extends Request @@ -31,6 +32,7 @@ class ShowPreviewRequest extends Request public function rules() { $rules = [ + 'design.design.body' => ['sometimes', 'required_if:design.design.is_template,true', new TwigLint()], ]; return $rules; diff --git a/app/Http/ValidationRules/Design/TwigLint.php b/app/Http/ValidationRules/Design/TwigLint.php new file mode 100644 index 000000000000..f65fc328fc3c --- /dev/null +++ b/app/Http/ValidationRules/Design/TwigLint.php @@ -0,0 +1,44 @@ +twig; + + try { + $twig->parse($twig->tokenize(new \Twig\Source(preg_replace('//s', '', $value), ''))); + } catch (\Twig\Error\SyntaxError $e) { + // echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); + nlog($e->getMessage()); + $fail($e->getMessage()); + + } + + + } +} + + diff --git a/app/Import/Transformer/Csv/ClientTransformer.php b/app/Import/Transformer/Csv/ClientTransformer.php index 4d41e35f0010..3599c9edf06b 100644 --- a/app/Import/Transformer/Csv/ClientTransformer.php +++ b/app/Import/Transformer/Csv/ClientTransformer.php @@ -28,7 +28,7 @@ class ClientTransformer extends BaseTransformer */ public function transform($data) { - if (isset($data->name) && $this->getString($data, 'client.name')) { + if (isset($data['client.name']) && $this->hasClient($data['client.name'])) { throw new ImportException('Client already exists'); }