@@ -66,36 +66,61 @@ the base controller and adds logging a new user registration to it.
66
66
{
67
67
public function registerAction(Request $request)
68
68
{
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;
90
113
}
91
114
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 );
94
117
95
- return new RedirectResponse($url);
118
+ if (null !== $response = $event->getResponse()) {
119
+ return $response;
120
+ }
96
121
}
97
122
98
- return $this->container->get('templating')->renderResponse ('@FOSUser/Registration/register.html.twig', array(
123
+ return $this->render ('@FOSUser/Registration/register.html.twig', array(
99
124
'form' => $form->createView(),
100
125
));
101
126
}
0 commit comments