/** * Показывает регистрационную форму если HTTP-метод GET. Обрабатывает форму если HTTP-метод POST * * @Route("/register", name = "register") * @Template("LearningMainBundle:Auth:registration.html.twig"); */ public function registerAction(Request $request) { if ($this->get('security.context')->isGranted('IS_AUTHENTICATED_REMEMBERED')) { return $this->redirect($this->generateUrl('_index')); } $em = $this->getDoctrine()->getManager(); $user = new User(); $referer = false; if ($request->query->get('refer')) { $array = unserialize(base64_decode(base64_decode(base64_decode(base64_decode($request->query->get('refer')))))); $user->setLastName($array['lastName']); $user->setFirstName($array['firstName']); $user->setSurName($array['surName']); $user->setCity($this->getDoctrine()->getRepository('LearningMainBundle:City')->findOneById($array['city'])); $user->setBirthdate($array['birthDay']); $user->setJob($array['job']); $user->setUsername($array['username']); $user->setHashEvrika($array['hash']); $user->setGraduateYear($array['graduateYear']); if ($this->remoteAuthAction($array['hash'])) { return $this->redirect($this->generateUrl('_index')); } $theme = $this->container->getParameter('theme'); if ($theme == 'roh') { if (isset($array['specialization'])) { $user->addSpecialization($this->getDoctrine()->getRepository('LearningMainBundle:Specialization')->findOneById($array['specialization'])); } } else { $user->addSpecialty($this->getDoctrine()->getRepository('LearningMainBundle:Specialty')->findOneById($array['specialty'])); if ($array['specialty2'] != '' && $array['specialty2'] != NULL) { $user->addSpecialty($this->getDoctrine()->getRepository('LearningMainBundle:Specialty')->findOneById($array['specialty2'])); } } $user->setUniversity($this->getDoctrine()->getRepository('LearningMainBundle:University')->findOneById($array['university'])); $referer = true; } $form = $this->createForm(new RegisterType($em), $user); if ($request->isMethod('POST')) { $form->submit($request); if ($form->isValid()) { if ($this->getDoctrine()->getRepository('LearningMainBundle:User')->findOneByUsername($user->getUsername()) != null) { #throw new \UnexpectedValueException('Пользователь с таким email уже существует'); $form->addError(new formError('Пользователь с таким email уже существует')); } else { try { # установка шифрованного пароля //$factory = $this->get('security.encoder_factory'); //$encoder = $factory->getEncoder($user); $password_orig = $user->getPassword(); //$password = $encoder->encodePassword($password_orig, $user->getSalt()); //$user->setPassword($password); $user->setHash($this->calculateHash($user)); $em->persist($user); $em->flush(); $em->refresh($user); $this->resetToken($user); # уведомление пользователя о регистрации $this->get('email.service')->send($user->getUsername(), array('LearningMainBundle:Email:registration.html.twig', array('user' => $user, 'password_orig' => $password_orig)), 'Благодарим за регистрацию на нашем портале!'); # уведомление администраторов о регистрации $this->get('email.service')->send($this->container->getParameter('manager_emails'), array('LearningMainBundle:Email:registration_notice.html.twig', array('user' => $user)), 'Зарегистрировался новый пользователь'); return $this->redirect($this->generateUrl('edit_profile')); } catch (\UnexpectedValueException $e) { $formError = new FormError($e->getMessage()); $form->addError($formError); } } $user = $form->getData(); } } return array('registration_form' => $form->createView(), 'title' => 'Регистрация', 'referer' => $referer); }