<?php
namespace App\Controller;
use App\Security\FacebookAuthenticator;
use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
class FacebookController extends AbstractController
{
/**
* Link to this controller to start the "connect" process
*
* @Route("/connect/facebook", name="connect_facebook_start")
*/
public function connectAction(ClientRegistry $clientRegistry,Request $request,SessionInterface $session)
{
$referer = $request->query->get('urlRefer', '/');
$session->set('previous_url', $referer);
return $clientRegistry
->getClient('facebook') // key used in config/packages/knpu_oauth2_client.yaml
->redirect();
}
/**
* After going to Facebook, you're redirected back here
* because this is the "redirect_route" you configured
* in config/packages/knpu_oauth2_client.yaml
*
* @Route("/connect/facebook/check", name="connect_facebook_check")
*/
public function connectCheckAction(Request $request, ClientRegistry $clientRegistry,FacebookAuthenticator $facebookAuthenticator,Session $session)
{
$user= $this->getUser();
$client= $clientRegistry->getClient('facebook');
$provider=$client->getOAuth2Provider();
if(!$user){
return new JsonResponse(array('status'=>false, 'message'=>"User not found!"));
}elseif ($facebookAuthenticator->checkifDeleted($user)){
$url="app_logout";
$response = $this->redirectToRoute($url);
$response->headers->setCookie(new \Symfony\Component\HttpFoundation\Cookie("deleted", true,strtotime('now + 5 second')));
return $response;
}else{
$targetUrl = $session->get('previous_url', '/');
return $this->redirect($targetUrl);
}
}
}