diff --git a/src/Security/EmailVerifier.php b/src/Security/EmailVerifier.php deleted file mode 100644 index 1d45afc..0000000 --- a/src/Security/EmailVerifier.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php - -namespace App\Security; - -use App\Entity\User; -use Doctrine\ORM\EntityManagerInterface; -use Symfony\Bridge\Twig\Mime\TemplatedEmail; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\Mailer\MailerInterface; -use Symfony\Component\Security\Core\User\UserInterface; -use SymfonyCasts\Bundle\VerifyEmail\Exception\VerifyEmailExceptionInterface; -use SymfonyCasts\Bundle\VerifyEmail\VerifyEmailHelperInterface; - -class EmailVerifier -{ - public function __construct( - private readonly VerifyEmailHelperInterface $verifyEmailHelper, - private readonly MailerInterface $mailer, - private readonly EntityManagerInterface $entityManager - ) { - } - - public function sendEmailConfirmation(string $verifyEmailRouteName, User /* UserInterface */ $user, TemplatedEmail $email): void - { - $signatureComponents = $this->verifyEmailHelper->generateSignature( - routeName: $verifyEmailRouteName, - userId: $user->getId(), - userEmail: $user->getEmail(), - extraParams: ['id' => $user->getId()] - ); - - $context = $email->getContext(); - $context['signedUrl'] = $signatureComponents->getSignedUrl(); - $context['expiresAtMessageKey'] = $signatureComponents->getExpirationMessageKey(); - $context['expiresAtMessageData'] = $signatureComponents->getExpirationMessageData(); - - $email->context(context: $context); - - $this->mailer->send(message: $email); - } - - /** - * @throws VerifyEmailExceptionInterface - */ - public function handleEmailConfirmation(Request $request, User /*UserInterface*/ $user): void - { - $this->verifyEmailHelper->validateEmailConfirmation(signedUrl: $request->getUri(), userId: $user->getId(), userEmail: $user->getEmail()); - - $user->setIsVerified(isVerified: true); - - $this->entityManager->persist(entity: $user); - $this->entityManager->flush(); - } -}