public function addAction(Request $request) { // 1) build the form $newAlias = new Alias(); $form = $this->createForm(AliasType::class, $newAlias); // get user_id $userId = $this->getUserId(); // 2) handle the submit (will only happen on POST) $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { // set user id in newAlias $newAlias->setUserId($userId); // set random Address in newAlias $aliasAddress = MailAddress::generateMailAddress($newAlias->getUserId(), $newAlias->getSite()); $newAlias->setAddress($aliasAddress); // set created & modified at now $now = new DateTime('now'); $newAlias->setCreated($now); $newAlias->setModified($now); // create in db $entityManager = $this->getEntityManager(); $entityManager->persist($newAlias); $entityManager->flush(); // return to alias list return $this->redirectToRoute('app_forward_alias_list'); } return $this->render('AppForwardBundle:Pages:alias_add.html.twig', array('form' => $form->createView(), 'user_id' => $userId)); }
public function createAction(Request $request) { // test it with : curl --data "id=1&site=mysite&url=mysite.abc/as.php" http://127.0.0.1/web/app_dev.php/api/create $httpCodeStatus = 401; // status: user not authenticated (the id is not recognized) $data = array('authenticated' => false, 'created' => false, 'address' => ''); // -- check if id given is good -- // get user_id given $user_id = $request->request->get('id'); // TODO : make it better (use crypted id) // get user by id in db $userManager = $this->get('fos_user.user_manager'); $user = $userManager->findUserBy(array('id' => $user_id)); if ($user instanceof User) { // id given is good $data['authenticated'] = true; // check datas are good $url_value = $request->request->get('url'); $site_value = $request->request->get('site'); if (!is_null($url_value) && !is_null($site_value)) { // datas are correct try { // create new alias $newAlias = new Alias(); // -- attributs -- // TODO use a manager to create ? // url $newAlias->setSite($site_value); $newAlias->setUrl($url_value); // user_id $newAlias->setUserId($user_id); // set random Address in newAlias $aliasAddress = MailAddress::generateMailAddress($newAlias->getUserId(), $newAlias->getSite()); $newAlias->setAddress($aliasAddress); // set created & modified at now $now = new DateTime('now'); $newAlias->setCreated($now); $newAlias->setModified($now); // create in db $entityManager = $this->getEntityManager(); $entityManager->persist($newAlias); $entityManager->flush(); // set response $data['address'] = $newAlias->getAddress(); $data['created'] = true; $httpCodeStatus = 200; // status: good } catch (Exception $e) { $httpCodeStatus = 503; // status: service unavailable or under maintenance } } } return new JsonResponse($data, $httpCodeStatus); }