src/Controller/FmSecurityController.php line 104

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Gos\PortalSettings;
  4. use App\Repository\PortalSettingsRepository;
  5. use App\Utils\PortalSettingsService;
  6. use Doctrine\ORM\EntityManager;
  7. use FOS\UserBundle\Controller\SecurityController as FOSBaseController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpFoundation\Session\Session;
  12. use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
  13. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  14. class FmSecurityController extends FOSBaseController
  15. {
  16.     private $portalSettingsHash;
  17.     private ?Request $request;
  18.     private PortalSettingsService $portalSettingsService;
  19.     private PortalSettingsRepository $portalSettingsRepository;
  20.     public function __construct(
  21.         RequestStack $requestStack,
  22.         PortalSettingsService $portalSettingsService,
  23.         PortalSettingsRepository $portalSettingsRepository,
  24.         AuthenticationUtils $authenticationUtils,
  25.         ?CsrfTokenManagerInterface $tokenManager null
  26.     ) {
  27.         $this->request $requestStack->getCurrentRequest();
  28.         $this->portalSettingsService $portalSettingsService;
  29.         $this->portalSettingsRepository $portalSettingsRepository;
  30.         parent::__construct($authenticationUtils$tokenManager);
  31.     }
  32.     public function loginAction(): Response
  33.     {
  34.         $request $this->request;
  35.         $currentRoute $request->attributes->get('_route');
  36.         if ($currentRoute !== 'backend_login')
  37.         {
  38.             // Wait for safari to set special cookie
  39.             $userAgent       $request->headers->get('User-Agent');
  40.             $isSafari        stripos($userAgent'Safari') && !stripos($userAgent'Chrome');
  41.             $safariCookieSet $request->cookies->get('gos_safari_cookie');
  42.             $isForceRedirect $request->query->has('r');
  43.             $portalSettingsHash $this->portalSettingsService->getPortalSettingsHashForIframe($request);
  44.             if ($isForceRedirect === false && empty($portalSettingsHash) && (($isSafari && $safariCookieSet) || !$isSafari))
  45.             {
  46.                 if ($currentRoute === 'eforum_login')
  47.                 {
  48.                     return $this->redirectToRoute('efShowDynamicTemplate');
  49.                 }
  50.                 if ($currentRoute === 'uniqskills_login' || $currentRoute === 'uniqskills_stress-test_login')
  51.                 {
  52.                     return $this->redirectToRoute('fmUniqskillsHomePage', [
  53.                         '_locale' => $request->getSession()->get('userLocale''pl')
  54.                     ]);
  55.                 }
  56.                 return $this->render('frontend/base/reloadPage.html.twig', [
  57.                     'method' => 'externalLink',
  58.                     'href' => 'login'
  59.                 ]);
  60.             }
  61.         }
  62.         if ($request->query->get('redirect'))
  63.         {
  64.             $request->getSession()->set('redirectAfterLogin'$request->query->get('redirect'));
  65.         }
  66.         if ($currentRoute == 'eforum_login' && !empty($this->getUser()))
  67.         {
  68.             return $this->redirectToRoute('efShowDynamicTemplate');
  69.         }
  70.         if ($currentRoute == 'uniqskills_login' && !empty($this->getUser()))
  71.         {
  72.             $modalVideo $request->query->get('modalVideo');
  73.             $modalPdf $request->query->get('modalPdf');
  74.             $modalCourse $request->query->get('modalCourse');
  75.             if (!empty($modalVideo))
  76.             {
  77.                 return $this->redirectToRoute('fmUniqskillsVideoPreview', [
  78.                     'video' => $modalVideo,
  79.                     'course' => $modalCourse
  80.                 ]);
  81.             }
  82.             if (!empty($modalPdf))
  83.             {
  84.                 return $this->redirectToRoute('fmUniqskillsModalSuccess');
  85.             }
  86.             return $this->redirectToRoute('fmUniqskillsAccount');
  87.         }
  88.         $this->portalSettingsHash $request->getSession()->get('portalSettingsHash');
  89.         return parent::loginAction();
  90.     }
  91.     public function renderLogin(array $data): Response
  92.     {
  93.         /** @var PortalSettings $portalSettings */
  94.         $portalSettings $this->portalSettingsRepository->findOneByHash($this->portalSettingsHash);
  95.         $currentRoute   $this->request->attributes->get('_route');
  96.         if ('backend_login' === $currentRoute)
  97.         {
  98.             $template sprintf('/backend/security/login.html.twig');
  99.         }
  100.         elseif ('order_login' === $currentRoute)
  101.         {
  102.             $template sprintf('/frontend/order/user/login.html.twig');
  103.         }
  104.         elseif ('eforum_login' === $currentRoute)
  105.         {
  106.             $template sprintf('/frontend-eforum/security/login.html.twig');
  107.         }
  108.         elseif ('uniqskills_login' === $currentRoute)
  109.         {
  110.             $modalVideo  $this->request->query->get('modalVideo');
  111.             $modalPdf    $this->request->query->get('modalPdf');
  112.             $modalCourse $this->request->query->get('modalCourse');
  113.             $template    sprintf('/uniqskills/security/login.html.twig');
  114.             if (!empty($modalVideo) or !(empty($modalPdf)))
  115.             {
  116.                 $session = new Session();
  117.                 if (!empty($modalVideo))
  118.                     $session->set('modalVideo'$modalVideo);
  119.                 if (!empty($modalPdf))
  120.                     $session->set('modalPdf'$modalPdf);
  121.                 if (!empty($modalCourse))
  122.                     $session->set('modalCourse'$modalCourse);
  123.                 $data['modal'] = true;
  124.             }
  125.         }
  126.         else
  127.         {
  128.             $template sprintf('/frontend/security/login.html.twig');
  129.         }
  130.         $data['portalSettings'] = $portalSettings;
  131.         $data['source'] = $this->request->query->get('source''default');
  132.         return $this->render($template$data);
  133.     }
  134. }