<?php
namespace App\Form\Forms\Security;
use Platform\SecurityBundle\Entity\Identity\Account;
use Platform\SecurityBundle\Validator\Constraints\PasswordStrength;
use Products\NotificationsBundle\Form\Type\InlineCheckboxType;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
final class AccountType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', EmailType::class)
->add('systemProfile', SystemProfileType::class)
->add('password', PasswordType::class, [
'required' => ($options['password'] === true),
'label_tooltip' => true,
'mapped' => false,
'constraints' => [
new PasswordStrength(),
],
])
->add('notify', InlineCheckboxType::class, [
'mapped' => false,
'label_tooltip' => true,
'label' => 'Notify User',
'required' => false,
'data' => $options['notify'],
]);
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'locale' => 'en',
'password' => true,
'notify' => true,
'constraints' => [
new UniqueEntity([
'entityClass' => Account::class,
'fields' => 'email',
]),
],
]);
}
}