<?php
// src/App/EventListener/JWTDecodedListener.php
namespace App\EventSubscriber;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTDecodedEvent;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
use Symfony\Component\HttpFoundation\RequestStack;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\User;
class JWTCreatedListener{
/**
* @var RequestStack
*/
private $requestStack;
private $entityManager;
/**
* @param RequestStack $requestStack
*/
public function __construct(RequestStack $requestStack,EntityManagerInterface $entityManager)
{
$this->requestStack = $requestStack;
$this->entityManager = $entityManager;
}
/**
* @param JWTCreatedEvent $event
*
* @return void
*/
public function onJWTCreated(JWTCreatedEvent $event)
{
$request = $this->requestStack->getCurrentRequest();
$payload = $event->getData();
$user = $this->entityManager->getRepository(User::class)->findOneByEmail($payload['email']);
$uuid = "profile-id-".$user->getProfile()->getId();
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://247548211a9ed919.api-eu.cometchat.io/v3/users/".$uuid,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
//CURLOPT_POSTFIELDS => $jsonString,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Accept: application/json',
'Apikey:7f0e4f8cd1613c00b49ef0f7146868dd6d57099f'
],
]);
$response = curl_exec($curl);
$dataArray = json_decode($response,true);
if(array_key_exists("error",$dataArray)){
$pseudoName = "User-".$user->getProfile()->getId();
if($user->getProfile()->getPseudoName()){
$pseudoName = $user->getProfile()->getPseudoName();
}
$jsonString = '{"uid": "profile-id-'.$user->getProfile()->getId().'","name": "'.$pseudoName.'"}';
$curlCreate = curl_init();
curl_setopt_array($curlCreate, [
CURLOPT_URL => "https://247548211a9ed919.api-eu.cometchat.io/v3/users",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $jsonString,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Accept: application/json',
'Apikey:7f0e4f8cd1613c00b49ef0f7146868dd6d57099f'
],
]);
$responseCreate = curl_exec($curlCreate);
$dataArrayCreate = json_decode($responseCreate,true);
//dd($dataArrayCreate);
$err = curl_error($curlCreate);
curl_close($curlCreate);
}
$err = curl_error($curl);
curl_close($curl);
$payload['ip'] = $request->getClientIp();
$profileID = null;
if($user->getProfile()){
$profileID = $user->getProfile()->getId();
}
$payload['profileID'] = $profileID;
$event->setData($payload);
$header = $event->getHeader();
$header['cty'] = 'JWT';
$event->setHeader($header);
}
}