src/Controller/DefaultController.php line 19

Open in your IDE?
  1. <?php
  2. /**
  3.  * This file is part of the Pimcore X Installation by
  4.  * ercas GmbH & CO. KG <https://www.ercasdieagentur.de>
  5.  *
  6.  *  @license GPLv3
  7.  */
  8. namespace App\Controller;
  9. use App\mvk\Model\DataObject\AbstractUser;
  10. use Pimcore\Controller\FrontendController;
  11. use Pimcore\Model\Document;
  12. use Pimcore\Model\WebsiteSetting;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. class DefaultController extends FrontendController
  16. {
  17.     public function damageAction(Request $request)
  18.     {
  19.         return $this->render('layout/damage-declaration.html.twig', []);
  20.     }
  21.     public function defaultAction(Request $request)
  22.     {
  23.         $user $this->getUser();
  24.         $documentId=$this->document->getId();
  25.         $excludedPaths $this->getWebSettingValueMultiple('2FA_ignoreDocument');
  26.         if ($this->checkUrlRegex($request->getPathInfo()) && $user && $user instanceof AbstractUser && !$user->getTwoFactorAuth() && !$user->getSkipTwoFactorAuth()  && $user->getActive() && $documentId!=$this->getWebSettingValue('2FA_infoPageDocument') && $documentId!=$this->getWebSettingValue('2FA_vmVerification') && $documentId!=$this->getWebSettingValue('2FA_activationDocument') && !in_array($documentId$excludedPaths)) {
  27.             $targetDocumentId $user->getTwoFactorRequested() ? $this->getWebSettingValue('2FA_infoPageDocument') : $this->getWebSettingValue('2FA_activationRequiredDocument');
  28.             $targetDocument Document::getById($targetDocumentId);
  29.             return new RedirectResponse($targetDocument->getFullPath());
  30.         }
  31.         $access$this->checkPagePermissions();
  32.         if (!$access) {
  33.             $accessDeniedDocument $this->getAccessDeniedDocument();
  34.             $baseUrl '';
  35.             return new RedirectResponse($baseUrl.$accessDeniedDocument->getFullPath());
  36.         }
  37.         return $this->render('html/02_body/02_main/main.html.twig', []);
  38.     }
  39.     public function angularAction(Request $request)
  40.     {
  41.         $access$this->checkPagePermissions();
  42.         if (!$access) {
  43.             $accessDeniedDocument $this->getAccessDeniedDocument();
  44.             $baseUrl '';
  45.             return new RedirectResponse($baseUrl.$accessDeniedDocument->getFullPath());
  46.         }
  47.         return $this->render('html/02_body/angular.html.twig', []);
  48.     }
  49.     public function mailAction(Request $request)
  50.     {
  51.         return $this->render('mail/mail.html.twig', []);
  52.     }
  53.     public function mailActionCustom(Request $request)
  54.     {
  55.         return $this->render('mail/custom-mail.html.twig', ['params'=>null]);
  56.     }
  57.     private function checkPagePermissions()
  58.     {
  59.         $permission$this->document->getProperty('pagePermissions');
  60.         if ($permission && !$this->editmode) {
  61.             return  $this->isGranted($permission);
  62.         }
  63.         return true;
  64.     }
  65.     private function checkUrlRegex($url)
  66.     {
  67.         $patterns 'admin|authentication|zwei-faktor|2fa_activation|2fa_qrcode_generate|2fa_code_verify';
  68.         $regex '/' $patterns'/';
  69.         if (preg_match($regex$url)) {
  70.             return false ;
  71.         } else {
  72.             return true;
  73.         }
  74.     }
  75.     private function getWebSettingValue($name)
  76.     {
  77.         $document \Pimcore\Model\WebsiteSetting::getByName($namenullnull);
  78.         $document $document $document->getData() : null ;
  79.         return $document $document->getId() : null;
  80.     }
  81.     private function getWebSettingValueMultiple($name)
  82.     {
  83.         $accessibleDocuments=[];
  84.         $websiteSettingList = new WebsiteSetting\Listing();
  85.         $websiteSettingList->setCondition(sprintf('%s = ? ''name'), $name);
  86.         foreach ($websiteSettingList->load() as $key => $websiteSetting) {
  87.             $websiteSettingData=WebsiteSetting::getById($websiteSetting->getId());
  88.             $accessibleDocument $websiteSettingData $websiteSettingData->getData() : null ;
  89.             if ($accessibleDocument && $websiteSettingData->getType()=='document' && $websiteSettingData->getData()!='') {
  90.                 array_push($accessibleDocuments$accessibleDocument->getId());
  91.             }
  92.         }
  93.         return $accessibleDocuments;
  94.     }
  95.     private function getAccessDeniedDocument()
  96.     {
  97.         if ($this->document->hasProperty('accessDeniedPage')) {
  98.             $accessDeniedDocId=$this->document->getProperty('accessDeniedPage')->getId();
  99.         } else {
  100.             $accessDeniedDocId=1;
  101.         }
  102.         return  Document::getById($accessDeniedDocId);
  103.     }
  104. }