/** * @Post("/register") * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function registerAction(Request $request) { $email = $request->request->get('email'); $password = $request->request->get('password'); $creditCard = ['name' => $request->request->get('cc-name'), 'number' => $request->request->get('cc-number'), 'cvc' => $request->request->get('cc-cvc'), 'month' => $request->request->get('cc-month'), 'year' => $request->request->get('cc-year')]; if (!$email || !$password) { throw new \Symfony\Component\Validator\Exception\InvalidArgumentException('Email and password required'); } if (!$this->get('credit_card_validator')->validate($creditCard)) { throw new \Symfony\Component\Validator\Exception\InvalidArgumentException('Invalid Credit Card given'); } $dm = $this->get('doctrine.odm.mongodb.document_manager'); $user = $dm->getRepository('AppBundle:User')->findOneBy(['email' => $email]); if ($user) { throw new \Symfony\Component\Validator\Exception\InvalidArgumentException('User already exists'); } $user = new User(); $user->setEmail($email); $user->setPassword($password); $user->setCreditCard($creditCard); $dm->persist($user); $dm->flush(); return true; }
/** * Creates a new user document and persist it * @param ObjectManager $manager object manager * @param string|null $email email to create user with * @return User */ private function _createUser(ObjectManager $manager, $email = null) { $user = new User(); $email = $email ?: sprintf('*****@*****.**', uniqid()); $user->setEmail($email); $user->setPassword(self::TEST_PASS); $encoder = $this->_container->get('security.password_encoder'); $encryptedPassword = $encoder->encodePassword($user, self::TEST_PASS); $user->setPassword($encryptedPassword); $manager->persist($user); return $user; }