diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php new file mode 100644 index 0000000..2a2a5b6 --- /dev/null +++ b/src/Controller/RegistrationController.php @@ -0,0 +1,47 @@ +getUser()) { + return $this->redirectToRoute('app_homepage'); + } + + $user = new User(); + $form = $this->createForm(RegistrationType::class, $user); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $user->setPassword( + $passwordHasher->hashPassword($user, $form->get('plainPassword')->getData()) + ); + + $entityManager->persist($user); + $entityManager->flush(); + + return $this->redirectToRoute('app_login'); + } + + return $this->render('security/register.html.twig', [ + 'registrationForm' => $form, + ]); + } +} diff --git a/src/Form/RegistrationType.php b/src/Form/RegistrationType.php new file mode 100644 index 0000000..8cc3c55 --- /dev/null +++ b/src/Form/RegistrationType.php @@ -0,0 +1,45 @@ +add('email', EmailType::class) + ->add('plainPassword', RepeatedType::class, [ + 'type' => PasswordType::class, + 'mapped' => false, + 'first_options' => ['label' => 'Password'], + 'second_options' => ['label' => 'Confirm password'], + 'constraints' => [ + new NotBlank(message: 'Please enter a password.'), + new Length( + min: 6, + minMessage: 'Your password should be at least {{ limit }} characters.', + max: 4096, + ), + ], + ]); + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => User::class, + ]); + } +} diff --git a/templates/security/register.html.twig b/templates/security/register.html.twig new file mode 100644 index 0000000..4dac67a --- /dev/null +++ b/templates/security/register.html.twig @@ -0,0 +1,19 @@ +{% extends 'base.html.twig' %} + +{% block title %}Register{% endblock %} + +{% block body %} +
+

Register

+ + {{ form_start(registrationForm) }} + {{ form_row(registrationForm.email) }} + {{ form_row(registrationForm.plainPassword.first) }} + {{ form_row(registrationForm.plainPassword.second) }} + + + {{ form_end(registrationForm) }} + + +
+{% endblock %}