diff --git a/app/code/Magento/Quote/Model/Quote/Address/Validator.php b/app/code/Magento/Quote/Model/Quote/Address/Validator.php index b497cbcf4bdba..f902ac67fab80 100644 --- a/app/code/Magento/Quote/Model/Quote/Address/Validator.php +++ b/app/code/Magento/Quote/Model/Quote/Address/Validator.php @@ -48,6 +48,18 @@ public function isValid($value) $messages['invalid_email_format'] = 'Invalid email format'; } + $pattern_name = '/(?:[\p{L}\p{M}\,\-\_\.\'’`\s\d]){1,255}+/u'; + $messages = $this->isValidPattern($pattern_name, $value->getFirstname(), $messages, 'invalid_firstname', 'First Name is not valid!'); + $messages = $this->isValidPattern($pattern_name, $value->getLastname(), $messages, 'invalid_lastname', 'Last Name is not valid!'); + $messages = $this->isValidPattern($pattern_name, $value->getMiddlename(), $messages, 'invalid_middlename', 'Middle Name is not valid!'); + $messages = $this->isValidPattern($pattern_name, $value->getCompany(), $messages, 'invalid_company', 'Company is not valid!'); + $pattern_street = "/(?:[\p{L}\p{M}\"[],-.'’`&\s\d]){1,255}+/u"; + foreach ($value->getStreet() as $street) { + $messages = $this->isValidPattern($pattern_street, $street, $messages, 'invalid_street', 'Street is not valid!'); + } + $pattern_city = '/(?:[\p{L}\p{M}\s\-\']{1,100})/u'; + $messages = $this->isValidPattern($pattern_city, $value->getCity(), $messages, 'invalid_city', 'City is not valid!'); + $countryId = $value->getCountryId(); if (!empty($countryId)) { $country = $this->countryFactory->create(); @@ -61,4 +73,24 @@ public function isValid($value) return empty($messages); } + /** + * @param string $pattern + * @param mixed $value + * @param array $messages + * @param $message_type + * @param $message + * @return array + */ + public function isValidPattern(string $pattern, mixed $value, array $messages, $message_type, $message): array + { + if ($value == null) { + return $messages; + } + if (preg_match($pattern, $value, $matches)) { + if ($matches[0] != $value) { + $messages[$message_type] = $message; + } + } + return $messages; + } }