From 9ab0edbc5f8dc72a619f64b3bf35e936f26bdec3 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Wed, 1 May 2024 14:18:42 +0200 Subject: [PATCH] mvc - replace Phalcon\Filter\Validation\Validator\Regex with new native OPNsense\Base\Validators\Regex validator for https://github.com/opnsense/core/issues/6389 --- plist | 1 + .../OPNsense/Base/FieldTypes/BooleanField.php | 2 +- .../OPNsense/Base/FieldTypes/TextField.php | 2 +- .../models/OPNsense/Base/Validators/Regex.php | 64 +++++++++++++++++++ .../Base/FieldTypes/TextFieldTest.php | 6 +- 5 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 src/opnsense/mvc/app/models/OPNsense/Base/Validators/Regex.php diff --git a/plist b/plist index 3548d4d01..15d9cc515 100644 --- a/plist +++ b/plist @@ -597,6 +597,7 @@ /usr/local/opnsense/mvc/app/models/OPNsense/Base/Validators/NetworkValidator.php /usr/local/opnsense/mvc/app/models/OPNsense/Base/Validators/Numericality.php /usr/local/opnsense/mvc/app/models/OPNsense/Base/Validators/PresenceOf.php +/usr/local/opnsense/mvc/app/models/OPNsense/Base/Validators/Regex.php /usr/local/opnsense/mvc/app/models/OPNsense/CaptivePortal/ACL/ACL.xml /usr/local/opnsense/mvc/app/models/OPNsense/CaptivePortal/CaptivePortal.php /usr/local/opnsense/mvc/app/models/OPNsense/CaptivePortal/CaptivePortal.xml diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BooleanField.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BooleanField.php index 2980f1920..77058b20b 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BooleanField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BooleanField.php @@ -28,7 +28,7 @@ namespace OPNsense\Base\FieldTypes; -use Phalcon\Filter\Validation\Validator\Regex; +use OPNsense\Base\Validators\Regex; /** * Class TextField diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/TextField.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/TextField.php index d5a338372..b6f143220 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/TextField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/TextField.php @@ -28,7 +28,7 @@ namespace OPNsense\Base\FieldTypes; -use Phalcon\Filter\Validation\Validator\Regex; +use OPNsense\Base\Validators\Regex; /** diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/Validators/Regex.php b/src/opnsense/mvc/app/models/OPNsense/Base/Validators/Regex.php new file mode 100644 index 000000000..1feff7ba6 --- /dev/null +++ b/src/opnsense/mvc/app/models/OPNsense/Base/Validators/Regex.php @@ -0,0 +1,64 @@ +getValue($attribute); + $pattern = $this->getOption('pattern'); + $msg = $this->getOption('message'); + $failed = true; + if ($value !== null && preg_match($pattern, $value, $matches) ) { + $failed = $matches[0] != $value; + } + if ($failed) { + $validator->appendMessage(new Message($msg, $attribute, 'Regex')); + return false; + } + + return true; + } +} diff --git a/src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/TextFieldTest.php b/src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/TextFieldTest.php index 0ba886ae4..fd20500b9 100644 --- a/src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/TextFieldTest.php +++ b/src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/TextFieldTest.php @@ -173,7 +173,7 @@ class TextFieldTest extends Field_Framework_TestCase $field->setMask('/^[a-z]{8}$/'); $field->setValue("4bcd3fgh"); - $this->assertContains('Phalcon\Filter\Validation\Validator\Regex', $this->validate($field)); + $this->assertContains('Regex', $this->validate($field)); } /** @@ -243,7 +243,7 @@ class TextFieldTest extends Field_Framework_TestCase $field->setValue(1234); $this->assertEquals($field->getNodeData(), "1234"); - $this->assertContains('Phalcon\Filter\Validation\Validator\Regex', $this->validate($field)); + $this->assertContains('Regex', $this->validate($field)); } /** @@ -341,6 +341,6 @@ class TextFieldTest extends Field_Framework_TestCase $field->setChangeCase('UPPER'); $field->setValue("ab cde fgh"); - $this->assertContains('Phalcon\Filter\Validation\Validator\Regex', $this->validate($field)); + $this->assertContains('Regex', $this->validate($field)); } }