/**
  * @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());
 }
Ejemplo n.º 2
0
 /**
  * {@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;
 }