src/EventSubscriber/UserSubscriber.php line 64

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Symfony\EventListener\EventPriorities;
  4. use App\Entity\User;
  5. use App\User\UserActivation;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpKernel\Event\ViewEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  11. use Symfony\Component\Security\Core\Security;
  12. use Symfony\Component\String\ByteString;
  13. final class UserSubscriber implements EventSubscriberInterface
  14. {
  15.     public function __construct(
  16.         private UserActivation $userActivation,
  17.         private Security $security,
  18.         private UserPasswordHasherInterface $passwordHasher)
  19.     {
  20.     }
  21.     public static function getSubscribedEvents()
  22.     {
  23.         return [
  24.             KernelEvents::VIEW => [
  25.                 ['postWriteUser'EventPriorities::POST_WRITE],
  26.                 ['preWriteUser'EventPriorities::PRE_WRITE]
  27.             ],
  28.         ];
  29.     }
  30.     public function preWriteUser(ViewEvent $event): void
  31.     {
  32.         $user $event->getControllerResult();
  33.         $method $event->getRequest()->getMethod();
  34.         if (!($user instanceof User)) {
  35.             return;
  36.         }
  37.         $password null;
  38.         if (Request::METHOD_POST == $method){
  39.             $password ByteString::fromRandom(10)->toString();
  40.             $user->setPlainPassword($password);
  41.             // $password = "testtest";
  42.             $user->setIsEnabled(true);
  43. //            $user->addRole(User::ROLE_USER);
  44.         }
  45.         else if ($user->getPlainPassword()) {
  46.             $password $user->getPlainPassword();
  47.         }
  48.         if ($password) {
  49.             $hashedPassword $this->passwordHasher->hashPassword(
  50.                 $user,
  51.                 $password
  52.             );
  53.             $user->setPassword($hashedPassword);
  54.         }
  55.     }
  56.     public function postWriteUser(ViewEvent $event): void
  57.     {
  58.         $user $event->getControllerResult();
  59.         $method $event->getRequest()->getMethod();
  60.         if (!($user instanceof User)|| (Request::METHOD_POST !== $method)) {
  61.             return;
  62.         }
  63.         $this->userActivation->sendActivationEmail($user);
  64.     }
  65. }