<?php
declare(strict_types=1);
namespace App\Form\EventListener\User;
use App\Entity\Security\User;
use App\Form\FormHelper;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
class AddRepeatedPasswordFieldSubscriber extends FormHelper implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [FormEvents::PRE_SET_DATA => 'preSetData'];
}
public function preSetData(FormEvent $event): void
{
/** @var User $user */
$user = $event->getData();
if (null !== $user && null !== $user->getId() && 'user_password' !== $event->getForm()->getName()) {
return;
}
$event->getForm()->add('plainPassword', RepeatedType::class, $this->getRepeatedParameters(
PasswordType::class,
true,
'app.global.user.form.password.first',
'app.global.user.form.password.second',
'app.global.user.form.password.not_identical',
[
'autocomplete' => 'off',
]
));
}
}