src/EventSubscriber/EasyAdminSubscriber.php line 38
<?phpnamespace App\EventSubscriber;use App\Entity\FormerStudent;use App\Entity\FormerStudentContribution;use App\Entity\ClassRoom;use App\Entity\ContributionType;use App\Entity\User;use Doctrine\ORM\EntityManagerInterface;use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;class EasyAdminSubscriber implements EventSubscriberInterface{public function __construct(private UserPasswordHasherInterface $passwordHasher,private EntityManagerInterface $em,private RequestStack $requestStack,){}public static function getSubscribedEvents(){return [BeforeEntityPersistedEvent::class => ['onCreate'],BeforeEntityUpdatedEvent::class => ['onUpdate']];}public function onCreate(BeforeEntityPersistedEvent $event){$entity = $event->getEntityInstance();if ($entity instanceof User) {$this->hashPassword($entity, $this->requestStack->getCurrentRequest()->get('User'));}if ($entity instanceof FormerStudentContribution) {$contributionType = $this->requestStack->getCurrentRequest()->get('contributionTypeSelect');$contributionType = $this->em->getRepository(ContributionType::class)->find(intval($contributionType));$entity->setContributionType($contributionType->getName());$entity->setRate($contributionType->getRate());$entity->setYear($entity->getContribution()->getYear());$this->em->persist($entity);$this->em->flush();}}public function onUpdate(BeforeEntityUpdatedEvent $event){$entity = $event->getEntityInstance();if ($entity instanceof User) {$this->hashPassword($entity, $this->requestStack->getCurrentRequest()->get('User'));}if ($entity instanceof ClassRoom) {$this->em->persist($entity);$this->em->flush($entity);}}public function hashPassword($entity, $request){$newPassword = $request['plainText']['plainPassword']['first'] ?: null;if ($newPassword) {$hashedPassword = $this->passwordHasher->hashPassword($entity,$newPassword);$entity->setPassword($hashedPassword);$this->em->persist($entity);$this->em->flush();}}}