diff --git a/cp/app/Controllers/ContactsController.php b/cp/app/Controllers/ContactsController.php index b493a77..59f0055 100644 --- a/cp/app/Controllers/ContactsController.php +++ b/cp/app/Controllers/ContactsController.php @@ -7,6 +7,10 @@ use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Container\ContainerInterface; use League\ISO3166\ISO3166; +use Egulias\EmailValidator\EmailValidator; +use Egulias\EmailValidator\Validation\DNSCheckValidation; +use Egulias\EmailValidator\Validation\MultipleValidationWithAnd; +use Egulias\EmailValidator\Validation\RFCValidation; class ContactsController extends Controller { @@ -561,7 +565,7 @@ class ContactsController extends Controller [ $contact['id'] ]); $contactPostal = $db->select('SELECT * FROM contact_postalInfo WHERE contact_id = ?', [ $contact['id'] ]); - + $responseData = [ 'contact' => $contact, 'contactStatus' => $contactStatus, @@ -584,6 +588,27 @@ class ContactsController extends Controller $responseData['verifyEmail'] = $verifyEmail; $responseData['verifyPostal'] = $verifyPostal; } + + if ($verifyPhone == 'on') { + $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance(); + try { + $numberProto = $phoneUtil->parse($contact['voice'], $contactPostal[0]['cc']); + $isValid = $phoneUtil->isValidNumber($numberProto); + $responseData['phoneDetails'] = $isValid; + } catch (\libphonenumber\NumberParseException $e) { + $responseData['phoneDetails'] = $e; + } + } + + if ($verifyEmail == 'on') { + $validator = new EmailValidator(); + $multipleValidations = new MultipleValidationWithAnd([ + new RFCValidation(), + new DNSCheckValidation() + ]); + $isValid = $validator->isValid($contact['email'], $multipleValidations); + $responseData['emailDetails'] = $isValid; + } return view($response, 'admin/contacts/validateContact.twig', $responseData); } else { diff --git a/cp/composer.json b/cp/composer.json index 52cf927..6e91ba6 100644 --- a/cp/composer.json +++ b/cp/composer.json @@ -43,7 +43,8 @@ "ramsey/uuid": "^4.7", "selective/xmldsig": "^3.1", "adyen/php-api-library": "^17.1", - "giggsey/libphonenumber-for-php-lite": "^8.13" + "giggsey/libphonenumber-for-php-lite": "^8.13", + "egulias/email-validator": "^4.0" }, "autoload": { "psr-4": { diff --git a/cp/resources/views/admin/contacts/validateContact.twig b/cp/resources/views/admin/contacts/validateContact.twig index c999f54..c21d1bc 100644 --- a/cp/resources/views/admin/contacts/validateContact.twig +++ b/cp/resources/views/admin/contacts/validateContact.twig @@ -51,27 +51,27 @@ {% if verifyPhone == 'on' %} {# The content you want to echo if verifyPhone is 'on' #}

- Phone verification is enabled. + Phone Validation

-
Validation TBD.
+
{{ phoneDetails ? 'Number valid' : 'Number invalid' }}
{% endif %} {% if verifyEmail == 'on' %} {# The content you want to echo if verifyEmail is 'on' #}

- Email verification is enabled. + Email Validation

-
Validation TBD.
+
{{ emailDetails == 1 ? 'Email valid' : 'Email invalid' }}
{% endif %} {% if verifyPostal == 'on' %} {# The content you want to echo if verifyPostal is 'on' #}

- Postal Mail verification is enabled. + Postal Mail Validation

Validation TBD.