public function authorizeUser(UserInterface $authenticatedUser)
 {
     $user = $this->userManager->findUserByEmail($authenticatedUser->getEmail());
     if (null == $user) {
         throw new FailureAuthorizedException(401, "XSolve Google Auth couldn't authorize user. User doesn't exists");
     }
     return $user;
 }
 public function validate($data, Constraint $constraint)
 {
     $id = $data->getId();
     $email = $data->getEmail();
     if ($id === null && $this->userManager->findUserByEmail($email)) {
         $this->context->addViolationAt('email', $constraint->message, array('%email%' => $email));
     }
     if ($id !== null && ($user = $this->userManager->findUserByEmail($email)) && $user->getId() !== $id) {
         $this->context->addViolationAt('email', $constraint->message, array('%email%' => $email));
     }
 }
 /**
  * Retourne un utilisateur de la base en fonction de l'utilisateur facebook
  * Si il n'existe pas, on en créée un
  * @param  GraphUser $user [description]
  * @return [type]          [description]
  */
 public function getUserFromFacebook(GraphUser $user)
 {
     $email = $user->getEmail();
     if (is_null($email)) {
         throw new \Exception('Facebook user does not share email', 400);
     }
     // Get user from email
     $fos_user = $this->user_manager->findUserByEmail($email);
     // Create user if necessary
     if (is_null($fos_user)) {
         $fos_user = $this->user_manager->createUser();
     }
     $fos_user->setEnabled(true);
     $fos_user->setEmail($email);
     $fos_user->setFirstName($user->getFirstName());
     $fos_user->setLastName($user->getLastName());
     $fos_user->setRoles([$this->user_role]);
     $fos_user->setFacebookId($user->getId());
     $fos_user->setLocale(substr($user->getProperty('locale'), 0, 2));
     $fos_user->setTimezone($user->getTimezone());
     $this->user_manager->updateCanonicalFields($fos_user);
     $this->user_manager->updateUser($fos_user);
     return $fos_user;
 }