public function newAction($id, Request $request) { $em = $this->getDoctrine()->getManager(); $customer = $em->getRepository('OrthIndexBundle:Customers')->findOneBy(array('id' => $id)); $user = new Users(); $form = $this->createForm(new UserType(), $user); $form->handleRequest($request); if ($form->isValid()) { $formData = $form->getData(); function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } $randomPassword = generateRandomString(); $encoderFactory = $this->get('security.encoder_factory'); $encoder = $encoderFactory->getEncoder($user); $salt = '$2a$12$uWepESKverBsrLAuOPY'; $passkeyHash = $encoder->encodePassword($randomPassword, $salt); $user->setPassKey($passkeyHash); $user->setCustomer($customer); $token = new Tokens(); $datetime = new \DateTime('tomorrow'); $datetime->format('Y-m-d H:i:s'); $token->setToken(md5(uniqid())); $token->setExpDate($datetime); $token->setUser($user); $em->persist($token); $em->persist($user); $em->flush(); $message = \Swift_Message::newInstance()->setSubject('Registrierung im OrthShop')->setFrom('*****@*****.**')->setTo($formData->getEmail())->setContentType("text/html")->setBody($this->renderView('OrthIndexBundle:Mail:adminregistrationMail.html.twig', array('user' => $user, 'token' => $token, 'passkey' => $randomPassword), 'text/html')); $this->get('mailer')->send($message); $this->get('session')->getFlashBag()->add('success', 'Der Benutzer wurde erfolgreich gespeichert!'); return $this->redirectToRoute('orth_admin_customer', array('id' => $customer->getId()), 301); } return $this->render('OrthAdminBundle:Users:new.html.twig', array('form' => $form->createView())); }