public function loadUserByOAuthUserResponse(UserResponseInterface $response)
 {
     $google_id = $response->getUsername();
     $email = $response->getEmail();
     //Check if this Google user already exists in our app DB
     $qb = $this->doctrine->getManager()->createQueryBuilder();
     $qb->select('u')->from('meetmeBundle\\Entity\\User', 'u')->where('u.googleId = :gid')->setParameter('gid', $google_id)->setMaxResults(1);
     $result = $qb->getQuery()->getResult();
     //when the user is registrating
     if (!count($result)) {
         //            $service = $response->getResourceOwner()->getName();
         ////            $setter = 'set'.ucfirst($service);
         ////            $setter_id = $setter.'Id';
         ////            $setter_token = $setter.'AccessToken';
         // create new user here
         $user = new User();
         $user->setGoogleId($google_id);
         $user->setGoogleAccessToken($response->getAccessToken());
         //I have set all requested data with the user's username
         //modify here with relevant data
         $user->setUsername($google_id);
         $user->setEmail($email);
         //Set some wild random pass since its irrelevant, this is Google login
         $factory = $this->container->get('security.encoder_factory');
         $encoder = $factory->getEncoder($user);
         $password = $encoder->encodePassword(md5(uniqid()), $user->getSalt());
         $user->setPassword($password);
         $user->setStatus(1);
         $em = $this->doctrine->getManager();
         $em->persist($user);
         $em->flush();
         return $user;
     } else {
         $user = $result[0];
         /* return User */
     }
     //set id
     $this->session->set('id', $user->getId());
     return $this->loadUserByUsername($response->getUsername());
 }
 public function signupAction(Request $request)
 {
     $sesion = $this->getRequest()->getSession();
     $em = $this->getDoctrine()->getManager();
     $repositorio = $em->getRepository('meetmeBundle:User');
     if ($request->getMethod() == 'POST') {
         $sesion->clear();
         $username = $request->get('username');
         $password = sha1($request->get('password'));
         $email = $request->get('email');
         //$remember = $request->get('remember');
         $userVal = $repositorio->findOneBy(array('username' => $username, 'password' => $password));
         $emailVal = $repositorio->findOneBy(array('email' => $email));
         if (is_null($userVal) && is_null($emailVal)) {
             $user = new User();
             $user->setName($request->get('name'));
             $user->setLastName($request->get('lastname'));
             $username = $request->get('username');
             $email = strtolower($email);
             $selectedCountry = filter_input(INPUT_POST, 'namecbxcountry', FILTER_SANITIZE_NUMBER_INT);
             $selectedCountry2 = $em->getRepository('meetmeBundle:Country')->findOneById($selectedCountry);
             $password = $request->get('password');
             $passwordError = "";
             //                //Password validation
             //                if(strlen($password) < 7){
             //                $passwordError = "La clave debe tener al menos 7 caracteres";
             //
             //                 }
             //                if(strlen($password) > 14){
             //                $passwordError = "La clave no puede tener más de 14 caracteres";
             //
             //                }
             //                if (!preg_match('`[a-z]`',$password)){
             //                $passwordError = "La clave debe tener al menos una letra minúscula";
             //
             //                }
             //                if (!preg_match('`[A-Z]`',$password)){
             //                $passwordError = "La clave debe tener al menos una letra mayúscula";
             //
             //                }
             //                if (!preg_match('`[0-9]`',$password)){
             //                $passwordError = "La clave debe tener al menos un caracter numérico";
             //
             //                }
             //
             //sign up success
             $password = sha1($password);
             $user->setPassword($password);
             $user->setUsername($username);
             $user->setCountry($selectedCountry2);
             $user->setEmail($email);
             $user->setIsActive(1);
             $user->setType("N");
             $user->setRegisterDate(new \DateTime("now"));
             $em = $this->getDoctrine()->getManager();
             $em->persist($user);
             $em->flush();
             $login = new Login();
             $login->setUsername($username);
             $login->setPassword($password);
             $login->setName($user->getName());
             $login->setLastname($user->getLastname());
             $this->get('session')->set('loginId', $user->getId());
             $sesion->set('login', $login);
             return $this->redirectToRoute('meetme_login');
         } else {
             $username = $request->get('username');
             $email = $request->get('email');
             return $this->render('meetmeBundle:twig_html:responsesignupfail.html.twig', array('username' => $username, 'email' => $email));
             $repositorio = $em->getRepository('meetmeBundle:Country');
             $countries = $repositorio->findAll();
             return $this->render('meetmeBundle:twig_html:signup.html.twig', array('countries' => $countries));
         }
     } else {
         $repositorio = $em->getRepository('meetmeBundle:Country');
         $countries = $repositorio->findAll();
         return $this->render('meetmeBundle:twig_html:signup.html.twig', array('countries' => $countries));
     }
 }