/**
  * Creates a new user
  * @param Request $request
  * @return JsonResponse
  * @throws BadRequestHttpException
  */
 public function postAction(Request $request)
 {
     $data = $this->getParsedRequestContent($request);
     if (!isset($data['name']) || !isset($data['password'])) {
         throw new BadRequestHttpException('The parameter name or password is missing.');
     }
     if (!preg_match('/^[a-zA-Z0-9]{3,16}$/', $data['name'])) {
         throw new BadRequestHttpException('The parameter name does not match the pattern.');
     }
     if (!preg_match('/^.{6,32}$/', $data['password'])) {
         throw new BadRequestHttpException('The parameter password does not match the pattern.');
     }
     if ($this->em->getRepository('CoreBundle:User')->findOneBy(['name' => $data['name']])) {
         $message = 'A user with this name allready exists.';
         return new JsonResponse($message, 200);
     }
     $passwordGenerator = new Password();
     $password = $passwordGenerator->generatePassword($data['password']);
     /* @var $user User */
     $user = new User();
     $user->setName($data['name']);
     $user->setPassword($password['password']);
     $user->setSalt($password['salt']);
     $this->em->persist($user);
     $this->em->flush();
     $request->getSession()->set('userId', $user->getId());
     return new JsonResponse(null, 204);
 }