/** * @Route("/professionals/edit/{id}", name="admin_professionals_edit") * @Template() */ public function editAction($id) { $em = $this->getDoctrine()->getManager(); $usermanager = $this->get('fos_user.user_manager'); $user = $em->getRepository('CoreUserBundle:User')->find($id); $professional = $user->getProfessional(); if (!$professional) { $professional = new Professional(); $professional->setUser($user); $professional->setCreatedAt(new \DateTime()); } $form = $this->createForm(new UserEditType(), $user); $request = $this->getRequest(); if ($request->getMethod() == 'POST') { $form->bindRequest($request); if ($form->isValid()) { $user->upload(); $user->setUpdatedAt(new \DateTime()); $professional->setUpdatedAt(new \DateTime()); $user->setProfessional($professional); $usermanager->updateUser($user); $em->persist($user); $em->persist($professional); $em->flush(); $this->get('session')->getFlashBag()->add('notice', 'Datos del profesional guardado on éxito'); return $this->redirect($this->generateUrl('admin_professionals_show', array('id' => $id))); } } return array('form' => $form->createView()); }
/** * {@inheritdoc} */ public function loadUserByOAuthUserResponse(UserResponseInterface $response) { $rawResponse = $response->getResponse(); $username = $response->getUsername(); $user = $this->userManager->findUserBy(array($this->getProperty($response) => $username)); if (null === $user) { $user = $this->userManager->findUserBy(array('email' => $rawResponse['emailAddress'])); } //when the user is registrating if (null === $user) { $service = $response->getResourceOwner()->getName(); $setter = 'set' . ucfirst($service); $setter_id = $setter . 'Id'; $setter_token = $setter . 'AccessToken'; // create new user here $user = $this->userManager->createUser(); $user->{$setter_id}($username); $user->{$setter_token}($response->getAccessToken()); //I have set all requested data with the user's username //modify here with relevant data $user->setUsername($username); $user->setEmail($username); $user->setPassword($username); $user->setEnabled(true); $professional = new Professional(); $professional->setUpdatedAt(new \DateTime()); $professional->setCreatedAt(new \DateTime()); $professional->setUser($user); $user->setProfessional($professional); $user->addRole('ROLE_USER'); $user->addRole('ROLE_PROFESIONAL'); /* CUSTOM PROVIDER INFO */ $user->setName($rawResponse['firstName']); $user->setSurname($rawResponse['lastName']); $user->setEmail($rawResponse['emailAddress']); $user->setExternalPath($rawResponse['pictureUrl']); $professional->setHeadline($rawResponse['headline']); $skills = array(); $rawskills = $rawResponse['skills']; foreach ($rawskills['values'] as $skill) { $skills[] = $skill['skill']['name']; } $professional->setSkills($skills); $this->entityManager->persist($professional); $this->userManager->updateUser($user); $this->entityManager->flush(); return $user; } //if user exists - go with the HWIOAuth way //$user = parent::loadUserByOAuthUserResponse($response); $serviceName = $response->getResourceOwner()->getName(); $setter = 'set' . ucfirst($serviceName) . 'AccessToken'; //update access token $user->{$setter}($response->getAccessToken()); return $user; }