@@ -66,36 +66,61 @@ the base controller and adds logging a new user registration to it.
6666 {
6767 public function registerAction(Request $request)
6868 {
69- $form = $this->container->get('fos_user.registration.form');
70- $formHandler = $this->container->get('fos_user.registration.form.handler');
71- $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
72-
73- $process = $formHandler->process($confirmationEnabled);
74- if ($process) {
75- $user = $form->getData();
76-
77- /*****************************************************
78- * Add new functionality (e.g. log the registration) *
79- *****************************************************/
80- $this->container->get('logger')->info(
81- sprintf('New user registration: %s', $user)
82- );
83-
84- if ($confirmationEnabled) {
85- $this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail());
86- $route = 'fos_user_registration_check_email';
87- } else {
88- $this->authenticateUser($user);
89- $route = 'fos_user_registration_confirmed';
69+ /** @var $formFactory FactoryInterface */
70+ $formFactory = $this->get('fos_user.registration.form.factory');
71+ /** @var $userManager UserManagerInterface */
72+ $userManager = $this->get('fos_user.user_manager');
73+ /** @var $dispatcher EventDispatcherInterface */
74+ $dispatcher = $this->get('event_dispatcher');
75+
76+ $user = $userManager->createUser();
77+ $user->setEnabled(true);
78+
79+ $event = new GetResponseUserEvent($user, $request);
80+ $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);
81+
82+ if (null !== $event->getResponse()) {
83+ return $event->getResponse();
84+ }
85+
86+ $form = $formFactory->createForm();
87+ $form->setData($user);
88+
89+ $form->handleRequest($request);
90+
91+ if ($form->isSubmitted()) {
92+ if ($form->isValid()) {
93+ $event = new FormEvent($form, $request);
94+ $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
95+
96+ $userManager->updateUser($user);
97+
98+ /*****************************************************
99+ * Add new functionality (e.g. log the registration) *
100+ *****************************************************/
101+ $this->container->get('logger')->info(
102+ sprintf("New user registration: %s", $user)
103+ );
104+
105+ if (null === $response = $event->getResponse()) {
106+ $url = $this->generateUrl('fos_user_registration_confirmed');
107+ $response = new RedirectResponse($url);
108+ }
109+
110+ $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
111+
112+ return $response;
90113 }
91114
92- $this->setFlash('fos_user_success', 'registration.flash.user_created' );
93- $url = $this->container->get('router')->generate($route );
115+ $event = new FormEvent($form, $request );
116+ $dispatcher->dispatch(FOSUserEvents::REGISTRATION_FAILURE, $event );
94117
95- return new RedirectResponse($url);
118+ if (null !== $response = $event->getResponse()) {
119+ return $response;
120+ }
96121 }
97122
98- return $this->container->get('templating')->renderResponse ('@FOSUser/Registration/register.html.twig', array(
123+ return $this->render ('@FOSUser/Registration/register.html.twig', array(
99124 'form' => $form->createView(),
100125 ));
101126 }
0 commit comments