src/OceanExpertBundle/EventListener/JWTCreatedListener.php line 42

Open in your IDE?
  1. <?php
  2. namespace OceanExpertBundle\EventListener;
  3. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  4. use Symfony\Component\HttpFoundation\RequestStack;
  5. use Doctrine\ORM\EntityManager;
  6. use OceanExpertBundle\Entity\ProfileImages;
  7. use OceanExpertBundle\Entity\Indiv;
  8. use OceanExpertBundle\Entity\IndivInstitution;
  9. use OceanExpertBundle\Entity\Institutions;
  10. /**
  11.  * JWTCreatedListener
  12.  *
  13.  * @author Nicolas Cabot <n.cabot@lexik.fr>
  14.  */
  15. class JWTCreatedListener
  16. {
  17.     protected $em;
  18.     /**
  19.      * @var RequestStack
  20.      */
  21.     private $requestStack;
  22.     /**
  23.      * @param RequestStack $requestStack
  24.      */
  25.     public function __construct(RequestStack $requestStack,EntityManager $em)
  26.     {
  27.         $this->requestStack $requestStack;
  28.         $this->em $em;
  29.         $this->request $this->requestStack->getCurrentRequest();
  30.     }
  31.     /**
  32.      * @param JWTCreatedEvent $event
  33.      *
  34.      * @return void
  35.      */
  36.     public function onJWTCreated(JWTCreatedEvent $event)
  37.     {
  38.         $payload       $event->getData();
  39.         $payload['userdetails'] = $this->getExpertDetailsById($this->em,$payload['email']);
  40.         $event->setData($payload);
  41.     }
  42.     function getExpertDetailsById($em,$email){
  43.         $member $em
  44.             ->getRepository('OceanExpertBundle:Indiv')
  45.             ->createQueryBuilder('i')
  46.             ->select('i.idInd,i.fname,i.sname,i.email1,i.jobtitle,ins.idInst,ins.instName,ins.instNameEng,i.useInstAddr,ci.country as insCountry,c.country')
  47.             ->leftJoin('OceanExpertBundle:IndivInstitution''ii''WITH''ii.idInd = i.idInd')
  48.             ->leftJoin('OceanExpertBundle:Institutions''ins''WITH''ii.idInst = ins.idInst')
  49.             ->leftJoin('OceanExpertBundle:Countries''c''WITH''i.countryCode = c.idCountry')
  50.             ->leftJoin('OceanExpertBundle:Countries''ci''WITH''ins.countryCode = ci.idCountry')
  51.             ->where('i.email1 = :email')
  52.             ->andWhere('i.status = 1')
  53.             ->setParameter('email',$email)
  54.             ->getQuery()
  55.             ->getResult();
  56.         $memberdata = array();
  57.         if($member){
  58.             $query $em
  59.                 ->getRepository('OceanExpertBundle:MemberGroups')
  60.                 ->createQueryBuilder('m')
  61.                 ->select('m.idGroup,g.groupname')
  62.                 ->leftJoin('OceanExpertBundle:Groups''g''WITH''g.idGroup = m.idGroup')
  63.                 ->where('m.idInd =:idInd')
  64.                 ->setParameter('idInd'$member[0]['idInd'])
  65.                 ->getQuery();
  66.             $groups $query->getResult();
  67.             $memberdata['idInd'] = $member[0]['idInd'];
  68.             $memberdata['fname'] = $member[0]['fname'];
  69.             $memberdata['sname'] = $member[0]['sname'];
  70.             if (file_exists("uploads/profile/profile_" $member[0]['idInd'].'.png')){
  71.                 $memberdata['image'] =$this->request->server->get('HTTP_HOST') . "/uploads/profile/profile_" $member[0]['idInd'].".png";
  72.             }else{
  73.                 $memberdata['image'] =  $this->request->server->get('HTTP_HOST') . "/assets/uploads/default.png";
  74.             }
  75.             $memberdata['name'] = $member[0]['fname']." ".$member[0]['sname'];
  76.             $memberdata['jobtitle'] = $member[0]['jobtitle'];
  77.             $memberdata['idInst'] = $member[0]['idInst'];
  78.             $memberdata['instName'] = $member[0]['instName'];
  79.             $memberdata['instNameEng'] = $member[0]['instNameEng'];
  80.             $memberdata['insCountry'] = $member[0]['insCountry'];
  81.             $memberdata['country'] = $member[0]['insCountry'];
  82.             $memberdata['groups'] = $groups;
  83.         }else{
  84.             $memberdata['error'] = "No memberdata available.";
  85.         }
  86.         return $memberdata;
  87.     }
  88. }