src/Controller/FacebookController.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Security\FacebookAuthenticator;
  4. use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
  5. use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Session\Session;
  10. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class FacebookController extends AbstractController
  13. {
  14.     /**
  15.      * Link to this controller to start the "connect" process
  16.      *
  17.      * @Route("/connect/facebook", name="connect_facebook_start")
  18.      */
  19.     public function connectAction(ClientRegistry $clientRegistry,Request $request,SessionInterface $session)
  20.     {
  21.         $referer $request->query->get('urlRefer''/');
  22.         $session->set('previous_url'$referer);
  23.         return $clientRegistry
  24.             ->getClient('facebook'// key used in config/packages/knpu_oauth2_client.yaml
  25.             ->redirect();
  26.     }
  27.     /**
  28.      * After going to Facebook, you're redirected back here
  29.      * because this is the "redirect_route" you configured
  30.      * in config/packages/knpu_oauth2_client.yaml
  31.      *
  32.          * @Route("/connect/facebook/check", name="connect_facebook_check")
  33.      */
  34.     public function connectCheckAction(Request $requestClientRegistry $clientRegistry,FacebookAuthenticator $facebookAuthenticator,Session $session)
  35.     {
  36.         $user$this->getUser();
  37.         $client$clientRegistry->getClient('facebook');
  38.         $provider=$client->getOAuth2Provider();
  39.         if(!$user){
  40.             return new JsonResponse(array('status'=>false'message'=>"User not found!"));
  41.         }elseif ($facebookAuthenticator->checkifDeleted($user)){
  42.             $url="app_logout";
  43.             $response $this->redirectToRoute($url);
  44.             $response->headers->setCookie(new \Symfony\Component\HttpFoundation\Cookie("deleted"true,strtotime('now + 5 second')));
  45.             return $response;
  46.         }else{
  47.             $targetUrl $session->get('previous_url''/');
  48.             return $this->redirect($targetUrl);
  49.         }
  50.     }
  51. }