From e6a1a275b6b18ba76af5f47dbcb6b52f4daed858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Gangloff?= Date: Tue, 25 Feb 2025 22:44:12 +0100 Subject: [PATCH] feat: check EPP contact roid --- src/Service/Connector/EppClientProvider.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Service/Connector/EppClientProvider.php b/src/Service/Connector/EppClientProvider.php index ec6f800..a05998d 100644 --- a/src/Service/Connector/EppClientProvider.php +++ b/src/Service/Connector/EppClientProvider.php @@ -4,6 +4,8 @@ namespace App\Service\Connector; use App\Dto\Connector\EppClientProviderDto; use App\Entity\Domain; +use Metaregistrar\EPP\eppCheckContactRequest; +use Metaregistrar\EPP\eppCheckContactResponse; use Metaregistrar\EPP\eppCheckDomainRequest; use Metaregistrar\EPP\eppCheckDomainResponse; use Metaregistrar\EPP\eppConnection; @@ -15,6 +17,7 @@ use Metaregistrar\EPP\eppHelloRequest; use Psr\Cache\CacheItemInterface; use Psr\Cache\CacheItemPoolInterface; use Psr\Cache\InvalidArgumentException; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Validator\Validator\ValidatorInterface; @@ -41,6 +44,17 @@ class EppClientProvider extends AbstractProvider implements CheckDomainProviderI $this->eppClient->request(new eppHelloRequest()); + $contacts = []; + foreach ($this->authData['domain']['contacts'] as $role => $roid) { + $contacts[] = new eppContactHandle($roid, $role); + } + + /** @var eppCheckContactResponse $resp */ + $resp = $this->eppClient->request(new eppCheckContactRequest($contacts)); + if (in_array(true, $resp->getCheckedContacts())) { + throw new BadRequestHttpException('At least one of the contacts entered cannot be used because they are indicated as available.'); + } + $this->eppClient->logout(); $this->eppClient->disconnect(); }