src/EventSubscriber/UserAdminSubscriber.php line 37

Open in your IDE?
  1. <?php
  2. # src/EventSubscriber/EasyAdminSubscriber.php
  3. namespace App\EventSubscriber;
  4. use App\Entity\User;
  5. use App\Services\UserService;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;
  8. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  9. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  12. class UserAdminSubscriber implements EventSubscriberInterface
  13. {
  14.     private $em;
  15.     private $params;
  16.     private $hasher;
  17.     private $userService;
  18.     public function __constructEntityManagerInterface $em,ContainerBagInterface $params,UserPasswordHasherInterface $hasherUserService $userService)
  19.     {
  20.         $this->em $em;
  21.         $this->params $params;
  22.         $this->hasher $hasher;
  23.         $this->userService $userService;
  24.     }
  25.     public static function getSubscribedEvents()
  26.     {
  27.         return [
  28.             AfterEntityUpdatedEvent::class => ['updateUserIntoAdmin'],
  29.             AfterEntityPersistedEvent::class => ['persistUserIntoAdmin'],
  30.         ];
  31.     }
  32.     public function updateUserIntoAdmin(AfterEntityUpdatedEvent $event){
  33.         $this->upgradeUserIntoAdmin($event);
  34.     }
  35.     public function persistUserIntoAdmin(AfterEntityPersistedEvent $event){
  36.         $this->upgradeUserIntoAdmin($event);
  37.     }
  38.     private function isValidMd5($md5 ='') {
  39.         return strlen($md5) == 32 && ctype_xdigit($md5);
  40.     }
  41.     private function upgradeUserIntoAdmin($event)
  42.     {
  43.         $entity $event->getEntityInstance();
  44.         if (!($entity instanceof User)) {
  45.             return;
  46.         }
  47.         if(!empty($entity->getPassword()) && $entity->getPassword() != null && !(strpos($entity->getPassword(), '$argon') !== false) && !(strpos($entity->getPassword(), '$2y$13$') !== false)){
  48.             $entity->setPassword($this->hasher->hashPassword($entity$entity->getPassword()));
  49.         }
  50.         $now = new \DateTime();
  51.         $userRepository $this->em->getRepository(User::class);
  52.         $userTokenExist $userRepository->findByUserToken($entity->getUserToken());
  53.         if($entity->getUserToken() == '' || count($userTokenExist) > ){
  54.             $userToken md5($entity->getEmail().'rocroi'.$now->format('Ymd'));
  55.             $entity->setUserToken($userToken);
  56.         }
  57.         $this->em->persist($entity);
  58.         $this->em->flush();
  59.     }
  60. }