<?php
namespace App\Form;
use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Contracts\Translation\TranslatorInterface;
class PasswordType extends AbstractType
{
/**
* @var Security
*/
private $security;
private TranslatorInterface $translator;
public function __construct(Security $security, TranslatorInterface $translator)
{
$this->security = $security;
$this->translator = $translator;
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$_ = $this->translator;
$builder
->add('password', RepeatedType::class, [
'type' => \Symfony\Component\Form\Extension\Core\Type\PasswordType::class,
'invalid_message' => $_->trans('Password.invalidMessage'),
'options' => ['attr' => ['class' => 'form-control']],
'required' => false,
'empty_data' => null,
'first_options' => [
'label' => "Password.first",
'attr' => [
'placeHolder' => $_->trans('select.password'),
'autocomplete' => 'new-password',
],
'constraints' => [
new NotBlank([
'message' => $_->trans('Password.pleaseEnterPassword'),
]),
new Length([
'min' => 6,
'minMessage' => $_->trans('Password.minValidation'),
// max length allowed by Symfony for security reasons
'max' => 4096,
]),
],
],
'second_options' => ['label' => 'Password.second', 'attr' => ['placeHolder' => $_->trans('select.repeatPassword')],
'constraints' => [
new NotBlank([
'message' => $_->trans('Password.pleaseEnterPassword'),
]),
new Length([
'min' => 6,
'minMessage' => $_->trans('Password.minValidation'),
// max length allowed by Symfony for security reasons
'max' => 4096,
]),
],
],
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}