Ejemplo n.º 1
0
     return $app->redirect($app['url_generator']->generate('login', array('fail' => 'provider_not_found')));
 }
 try {
     $hybridAuth = new Hybrid_Auth($config);
     $adapter = $hybridAuth->authenticate($provider);
     $profile = $adapter->getUserProfile();
     $q = UserQuery::create()->filterByHybridAuthProviderId($provider)->filterByHybridAuthId($profile->identifier);
     $user = $q->findOne();
     if (!$user) {
         $base = "ABCDEFGHKLMNOPQRSTWXYZabcdefghjkmnpqrstwxyz123456789";
         $pass = "";
         for ($i = 0; $i < 10; $i++) {
             $pass .= $base[mt_rand(0, strlen($base) - 1)];
         }
         $user = new User();
         $user->setHybridAuthProviderId($provider);
         $user->setHybridAuthId($profile->identifier);
         $user->setEmail($profile->email);
         $user->setUsername("{$provider}::{$profile->identifier}");
         $encoder = $app['security.encoder_factory']->getEncoder($user);
         $user->setPassword($encoder->encodePassword($pass, $user->getSalt()));
         $user->save();
     }
     // force login
     $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
     $app['security']->setToken($token);
     // $response = $app->redirect($app['session']->get('_security.main.target_path') ?: $app['url_generator']->generate('homepage'));
     $response = $app->redirect($app['url_generator']->generate('watchlist'));
     $app['session']->set('_security.main.target_path', '');
     $response->headers->setCookie(new Cookie('logged_in', true));
     return $response;