<?php
namespace App\EventListener;
use App\Repository\DepositRepository;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RequestStack;
class JWTCreatedListener extends AbstractController
{
/**
* @var RequestStack
*/
private $requestStack;
/**
* @param RequestStack $requestStack
*/
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
/**
* @param JWTCreatedEvent $event
*
* @return void
*/
public function onJWTCreated(JWTCreatedEvent $event)
{
$request = json_decode($this->requestStack->getCurrentRequest()->getContent(), true);
$payload = $event->getData();
if ($request) {
// $expiration = new \DateTime();
if ($request['username'] != $event->getUser()->getLogin()) {
$payload['username'] = $request['username'];
$payload['email'] = $request['email'];
$payload['valid'] = 'false';
$event->setData($payload);
} else {
$payload['username'] = $request['username'];
$payload['valid'] = 'true';
$payload['email'] = $request['email'];
$payload['active'] = $event->getUser()->getActive();
$payload['name'] = $event->getUser()->getFirstName();
$payload['Country'] = $event->getUser()->getCountry();
$payload['City'] = $event->getUser()->getCity();
$payload['address'] = $event->getUser()->getAddress();
$payload['company'] = $event->getUser()->getBusinessName();
$payload['phone'] = $event->getUser()->getContactPhone();
if (in_array("ROLE_AGENCY",$event->getUser()->getRoles())){
$payload['deposit'] = $event->getUser()->getDeposit();
$payload['markup'] = $event->getUser()->getMarkup();
$payload['markupagence'] = $event->getUser()->getMarkupAgence();
$payload['currency'] = $event->getUser()->getCurrency()->getCode();
}
else if (in_array("ROLE_AGENT",$event->getUser()->getRoles())){
$payload['deposit'] = $event->getUser()->getIdAgence()->getDeposit();
$payload['markup'] = $event->getUser()->getIdAgence()->getMarkup();
$payload['markupagence'] = $event->getUser()->getMarkupAgence();
$payload['currency'] = $event->getUser()->getCurrency()->getCode();
}else{
$payload['markup'] = $event->getUser()->getMarkup();
$payload['markupagence'] = 0;
$payload['deposit']="";
$payload['currency'] = "";
}
// $payload['exp'] = $expiration->getTimestamp();
$event->setData($payload);
}
}else{
$expiration = new \DateTime('+1 hour');
$payload['exp'] = $expiration->getTimestamp();
$event->setData($payload);
}
}
}