<?php
/**
* Frontend Login Type
*
* @author Vincent van Waasbergen <v.vanwaasbergen@visualmedia.nl>
*/
namespace VisualMedia\SecurityBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Routing\RouterInterface;
use VisualMedia\LisaBundle\Form\Type\BooleanType;
use VisualMedia\SecurityBundle\Service\LoginHandler;
/**
* Frontend Login Type
*/
class FrontendLoginType extends AbstractType
{
/**
* Router
* @var RouterInterface
*/
protected $router;
/**
* Constructor
*
* @param RouterInterface $router
*/
public function __construct(RouterInterface $router)
{
$this->router = $router;
}
/**
* {@inheritDoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->setAction($this->router->generate($options['route']));
$builder->add(LoginHandler::RETURN_URL, HiddenType::class, array(
'required' => false,
));
$builder->add('_username', TextType::class, array(
'label' => 'login.username',
'required' => false,
));
$builder->add('_password', PasswordType::class, array(
'label' => 'login.password',
'required' => false,
));
$builder->add('_remember_me', CheckboxType::class, array(
'label' => 'login.remember_me',
'required' => false,
));
$builder->add('login', SubmitType::class, array('label' => 'login.login'));
}
/**
* {@inheritDoc}
*/
public function getBlockPrefix(): string
{
return '';
}
/**
* {@inheritDoc}
*/
public function getName(): string
{
return 'frontend_login';
}
/**
* {@inheritDoc}
*/
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults(array(
'route' => 'frontend_login',
'translation_domain' => 'security',
'csrf_token_id' => 'authenticate'
));
}
}