src/Controller/Website/AbstractWebsiteController.php line 710

Open in your IDE?
  1. <?php
  2. namespace EADPlataforma\Controller\Website;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as Controller;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\RequestStack;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  10. use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
  11. use Symfony\Component\Serializer\Serializer;
  12. use EADPlataforma\Services\GeneralService;
  13. use EADPlataforma\Entity\ConfigurationIp;
  14. use EADPlataforma\Entity\User;
  15. use EADPlataforma\Enum\UserEnum;
  16. use EADPlataforma\Enum\ClientEnum;
  17. use EADPlataforma\Enum\ConfigurationIpEnum;
  18. use EADPlataforma\Enum\ServicesEnum;
  19. use EADPlataforma\Enum\ErrorEnum;
  20. abstract class AbstractWebsiteController extends Controller {
  21.     /**
  22.      * @var GeneralService
  23.      */
  24.     protected $generalService;
  25.     /**
  26.      * @var \MemcacheService
  27.      */
  28.     protected $memcacheService;
  29.     /**
  30.      * @var SchoolEntityManager
  31.      */
  32.     protected $em;
  33.     /**
  34.      * @var SchoolEntityManagerRead
  35.      */
  36.     protected $emRead;
  37.     /**
  38.      * @var EadminEntityManager
  39.      */
  40.     protected $emEadmin;
  41.     /**
  42.      * @var User $user
  43.      */
  44.     protected $user;
  45.     /**
  46.      * @var FileService $fileService
  47.      */
  48.     protected $fileService;
  49.     /**
  50.      * @var LogService $userLogService
  51.      */
  52.     protected $userLogService;
  53.     /**
  54.      * @var ConfigurationService
  55.      */
  56.     protected $configuration;
  57.     /**
  58.      * @var SessionInterface
  59.      */
  60.     protected $sessionSym;
  61.     /**
  62.      * @var EntityUtil $entityUtil
  63.      */
  64.     protected $entityUtil;
  65.     /**
  66.      * @var StringUtil $stringUtil
  67.      */
  68.     protected $stringUtil;
  69.     /**
  70.      * @var UserPermissionUtil $userPermissionUtil
  71.      */
  72.     protected $userPermissionUtil;
  73.     /**
  74.      * @var RequestUtil $requestUtil
  75.      */
  76.     protected $requestUtil;
  77.     /**
  78.      * @var \Client
  79.      */
  80.     protected $client;
  81.     /**
  82.      * @var \ClientConfiguration
  83.      */
  84.     protected $clientConfig;
  85.     /**
  86.      * @var string
  87.      */
  88.     protected $domain;
  89.     /**
  90.      * @var string
  91.      */
  92.     protected $eadDomain;
  93.     /**
  94.      * @var array
  95.      */
  96.     protected $data = [];
  97.     /**
  98.      * @var string
  99.      */
  100.     public $adminLink;
  101.     /**
  102.      * Constructor
  103.      *
  104.      * @param GeneralService $generalService
  105.      * @param RequestStack $requestStack
  106.      */
  107.     public function __construct(GeneralService $generalServiceRequestStack $requestStack){
  108.         $this->generalService $generalService;
  109.         $this->em $this->generalService->getService('SchoolEntityManager');
  110.         $this->emRead $this->generalService->getService('SchoolEntityManagerRead');
  111.         $this->emEadmin $this->generalService->getService('EadminEntityManager');
  112.         
  113.         $this->fileService $this->generalService->getService('FileService');
  114.         $this->userLogService $this->generalService->getService('LogService');
  115.         $this->memcacheService $this->generalService->getService('MemcacheService');
  116.         $this->userPermissionUtil $this->generalService->getUtil('UserPermissionUtil');
  117.         $databaseManagerService $this->generalService->getService('DatabaseManagerService');
  118.         $databaseManagerService->executeMigrations();
  119.         $request $requestStack->getCurrentRequest();
  120.         $this->user $this->generalService->getService('UserSessionService')->getUser();
  121.         $this->configuration $this->generalService->getService('ConfigurationService');
  122.         $this->sessionSym $this->configuration->getSessionSym();
  123.         $this->entityUtil $this->generalService->getUtil('EntityUtil');
  124.         $this->stringUtil $this->generalService->getUtil('StringUtil');
  125.         $this->requestUtil $this->generalService->getUtil('RequestUtil');
  126.         $this->client $this->configuration->getClient();
  127.         $this->clientConfig $this->configuration->getClientConfiguration();
  128.         if($this->client){
  129.             $this->domain $this->configuration->getActiveDomain(true);
  130.             $this->eadDomain $this->client->getDomainPrimary();
  131.             $this->adminLink $this->configuration->getAdminLink();
  132.         }
  133.         if(!$this->generalService->isSandbox()){
  134.             //$this->executeCron($request);
  135.         }
  136.         if($this->configuration->checkModuleIsAbleOnPlan('ipFunction')){
  137.             $this->checkConfigurationIp($request);
  138.         }
  139.         $this->checkPlatformStatus($request);
  140.         $this->checkRedirectDomain($request);
  141.         if($this->isPlatformActive()){
  142.             $this->checkIsRestricted($request);
  143.            $this->checkUserIsComplete($request);
  144.         }
  145.     }
  146.     public function executeCron(Request $request)
  147.     {
  148.         return;
  149.         /*$platformStatus = $this->clientConfig->getPlatformStatus();
  150.         $suspended = ClientEnum::PLATFORM_STATUS_SUSPENDED;
  151.         $canceled = ClientEnum::PLATFORM_STATUS_CANCELED;
  152.         
  153.         if($platformStatus == $suspended || $platformStatus == $canceled){
  154.             return;
  155.         }
  156.         if(
  157.             stristr($request->getPathInfo(), '/general/')
  158.         ){
  159.             return;
  160.         }
  161.         $today = date('Y-m-d H:i:s');
  162.         $lastExecutionDay = $this->configuration->get('cron_date');
  163.         $cronUrl = "https://{$this->eadDomain}/general/{$this->clientConfig->getToken()}";
  164.         if(!empty($lastExecutionDay)){
  165.             $todaySeconds = strtotime($today);
  166.             $lastExecutionSeconds = strtotime($lastExecutionDay);
  167.             $diff = $todaySeconds - $lastExecutionSeconds;
  168.             $diffHours = round($diff / 60 / 60);
  169.             
  170.             if($diffHours >= 24){
  171.                 $sqsService = $this->generalService->getService('Aws\\AwsSqs');
  172.                 $sqsService->sendMessageCron($cronUrl);
  173.                 sleep(5);
  174.             }
  175.         }else{
  176.             $hour = rand(7,9);
  177.             $min = rand(10,59);
  178.             $date = date('Y-m-d');
  179.             $this->configuration->set('cron_date', "{$date} 0{$hour}:{$min}:00", false);
  180.         }*/
  181.     }
  182.     public function checkConfigurationIp(Request $request)
  183.     {
  184.         $info $this->generalService->getServiceAccess(ServicesEnum::LOGIN);
  185.         if(!in_array($request->getClientIp(), $info->validIps)){
  186.             $configuration $this->generalService->getService('ConfigurationService');
  187.             
  188.             $configurationIpRepository $this->em->getRepository(ConfigurationIp::class);
  189.             $configurationIp $configurationIpRepository->findOneBy([
  190.                 "ip" => $request->getClientIp(),
  191.                 "deleted" => ConfigurationIpEnum::ITEM_NO_DELETED 
  192.             ]);
  193.             $countWhitelist $configurationIpRepository->count([
  194.                 "type" => ConfigurationIpEnum::WHITE_LIST,
  195.                 "deleted" => ConfigurationIpEnum::ITEM_NO_DELETED 
  196.             ]);
  197.             if($configurationIp){
  198.                 if($configurationIp->getType() == ConfigurationIpEnum::BLACK_LIST){
  199.                     $response = new Response(''Response::HTTP_UNAUTHORIZED);
  200.                     $response->send();
  201.                     exit;
  202.                 }
  203.             }elseif(!empty($countWhitelist)){
  204.                 $response = new Response(''Response::HTTP_UNAUTHORIZED);
  205.                 $response->send();
  206.                 exit;
  207.             }
  208.         }
  209.     }
  210.     public function checkRedirectDomain(Request $request)
  211.     {
  212.         $info $this->generalService->getServiceAccess(ServicesEnum::LOGIN);
  213.         if(in_array($request->getClientIp(), $info->validIps)){
  214.             return;
  215.         }
  216.         $ignoreRoutes = [
  217.             "manifest",
  218.             "sitemap",
  219.             "cronGeneral",
  220.             "callbackVimeo",
  221.             "getTokenAccessRd",
  222.             "executeCalculateAnticipation",
  223.             "getEADCheckoutFee",
  224.             "deleteNfeEADCheckout",
  225.             "executeCronListEmail",
  226.             "executeCronUserSubscription",
  227.             "sendWebhookQueue",
  228.             "deleteTrashAll",
  229.             "processDataEadCheckout",
  230.             "processDataEadCheckoutBar",
  231.             "processDataPagSeguro",
  232.             "processDataPagSeguroBar",
  233.             "processDataHotmart",
  234.             "processDataHotmartBar",
  235.             "processDataPayPal",
  236.             "processDataPayPalBar",
  237.             "processDataEduzz",
  238.             "processDataEduzzBar",
  239.             "processDataProvi",
  240.             "processDataProviBar",
  241.             "processDataBraip",
  242.             "processDataBraipBar",
  243.             "processDataMonetizze",
  244.             "processDataMonetizzeBar",
  245.             "processDataKiwify",
  246.             "processDataKiwifyBar",
  247.             "processDataDigitalManagerGuru",
  248.             "processDataDigitalManagerGuruBar",
  249.             "processDataAppMax",
  250.             "processDataAppMaxBar",
  251.             "processDataDoppus",
  252.             "processDataDoppusBar",
  253.             "processDataTicto",
  254.             "processDataTictoBar",
  255.             "processDataMercadoPago",
  256.             "processDataMercadoPagoBar",
  257.             "processDataAbmex",
  258.             "processDataAbmexBar",
  259.             "processDataPerfectPay",
  260.             "processDataPerfectPayBar",
  261.             "processDataEvermart",
  262.             "processDataEvermartBar",
  263.             "processDataHeroSpark",
  264.             "processDataHeroSparkBar",
  265.             "processDataYampi",
  266.             "processDataYampiBar",
  267.             "processDataCartPanda",
  268.             "processDataCartPandaBar",
  269.             "callbackRdStation",
  270.             "callbackRdStationBar",
  271.             "callbackDinamize",
  272.             "callbackDinamizeBar",
  273.             "cartCheckoutCharge",
  274.             "getRoutesToFileImport",
  275.             "getRoutesToExport",
  276.             "exportCertificate",
  277.             "exportTestimonial",
  278.             "exportEnrollment",
  279.             "exportExamUser",
  280.             "exportExamUserReport",
  281.             "exportLessonLog",
  282.             "exportNewsLetter",
  283.             "exportProductCharge",
  284.             "exportTransaction",
  285.             "exportTransactionItem",
  286.             "exportUser",
  287.             "exportUserSubscription",
  288.             "exportWhishList",
  289.             "exportLessonPresence",
  290.             "exportQuestions",
  291.             "fileGetUpload",
  292.             "exportLessonSupport",
  293.             "getClientInfo",
  294.             "downgradeToFree",
  295.             "upgradeReceivers",
  296.             "removeClientCustomDomain",
  297.             "getInfo",
  298.             "getInfoCourse"
  299.         ];
  300.         if(in_array($request->get('_route'), $ignoreRoutes)){
  301.             return;
  302.         }
  303.         $gKeyV3 $this->configuration->get('recaptcha_key_v3');
  304.         $gSecretV3 $this->configuration->get('recaptcha_secret_v3');
  305.         $domainPrimary $this->client->getDomainPrimary();
  306.         $domainSecondary $this->client->getDomainSecondary();
  307.         if(
  308.             empty($gKeyV3) || 
  309.             empty($gSecretV3) || 
  310.             !$this->configuration->checkModuleIsAbleOnPlan('domainFunction')
  311.         ){
  312.             if($request->getHost() == $domainSecondary && !empty($domainSecondary)){
  313.                 $url "https://{$domainPrimary}{$request->getPathInfo()}";
  314.                 $redirectResponse = new RedirectResponse($url302);
  315.                 $redirectResponse->send();
  316.                 exit;
  317.             }
  318.         }
  319.         if($this->clientConfig->getRedirect() == ClientEnum::YES){
  320.             if(empty($gKeyV3) || empty($gSecretV3)){
  321.                 return;
  322.             }
  323.             if($request->getHost() == $this->client->getDomainPrimary()){
  324.                 if(!empty($domainSecondary)){
  325.                     $url "https://{$domainSecondary}{$request->getPathInfo()}";
  326.                     $redirectResponse = new RedirectResponse($url301);
  327.                     $redirectResponse->send();
  328.                     exit;
  329.                 }
  330.             }
  331.         }
  332.     }
  333.     public function checkIsRestricted(Request $request)
  334.     {
  335.         if(!$this->user){
  336.             $ignoreRoutes = [ 
  337.                 "notFound",
  338.                 "manifest",
  339.                 "sitemap",
  340.                 "login",
  341.                 "loginPost",
  342.                 "loginFast",
  343.                 "loginApi",
  344.                 "loginConfirm",
  345.                 "loginAuthentication",
  346.                 "recoverPassword",
  347.                 "changePasswordPost",
  348.                 "resetPasswordPost",
  349.                 "userLogoff",
  350.                 "logoff ",
  351.                 "getChargePage",
  352.                 "cartCheckoutCharge",
  353.                 "cronGeneral",
  354.                 "callbackVimeo",
  355.                 "getTokenAccessRd",
  356.                 "executeCalculateAnticipation",
  357.                 "getEADCheckoutFee",
  358.                 "deleteNfeEADCheckout",
  359.                 "executeCronListEmail",
  360.                 "executeCronUserSubscription",
  361.                 "sendWebhookQueue",
  362.                 "deleteTrashAll",
  363.                 "processDataEadCheckout",
  364.                 "processDataEadCheckoutBar",
  365.                 "processDataPagSeguro",
  366.                 "processDataPagSeguroBar",
  367.                 "processDataHotmart",
  368.                 "processDataHotmartBar",
  369.                 "processDataPayPal",
  370.                 "processDataPayPalBar",
  371.                 "processDataEduzz",
  372.                 "processDataEduzzBar",
  373.                 "processDataProvi",
  374.                 "processDataProviBar",
  375.                 "processDataBraip",
  376.                 "processDataBraipBar",
  377.                 "processDataMonetizze",
  378.                 "processDataMonetizzeBar",
  379.                 "processDataKiwify",
  380.                 "processDataKiwifyBar",
  381.                 "processDataDigitalManagerGuru",
  382.                 "processDataDigitalManagerGuruBar",
  383.                 "processDataAppMax",
  384.                 "processDataAppMaxBar",
  385.                 "processDataDoppus",
  386.                 "processDataDoppusBar",
  387.                 "processDataTicto",
  388.                 "processDataTictoBar",
  389.                 "processDataMercadoPago",
  390.                 "processDataMercadoPagoBar",
  391.                 "processDataAbmex",
  392.                 "processDataAbmexBar",
  393.                 "processDataPerfectPay",
  394.                 "processDataPerfectPayBar",
  395.                 "processDataEvermart",
  396.                 "processDataEvermartBar",
  397.                 "processDataHeroSpark",
  398.                 "processDataHeroSparkBar",
  399.                 "processDataYampi",
  400.                 "processDataYampiBar",
  401.                 "processDataCartPanda",
  402.                 "processDataCartPandaBar",
  403.                 "callbackRdStation",
  404.                 "callbackRdStationBar",
  405.                 "callbackDinamize",
  406.                 "callbackDinamizeBar",
  407.                 "certificateSearchPage",
  408.                 "certificatePage",
  409.                 "stopNotification",
  410.                 "updateUserNotification",
  411.                 "fileGetUpload",
  412.                 "getClientInfo",
  413.                 "downgradeToFree",
  414.                 "upgradeReceivers",
  415.                 "removeClientCustomDomain",
  416.                 "downloadCertificate",
  417.                 "viewCertificate",
  418.                 "getInfo",
  419.                 "getInfoCourse"
  420.             ];
  421.             $platformType $this->client->getPlatformType();
  422.             if($platformType == ClientEnum::PLATFORM_TYPE_RESTRICTED){
  423.                 if(in_array($request->get('_route'), $ignoreRoutes)){
  424.                     return;
  425.                 }
  426.                 $this->checkUserSession($request);
  427.                 return;
  428.             }
  429.         }
  430.         return;
  431.     }
  432.     public function isPlatformActive()
  433.     {
  434.         $platformStatus $this->clientConfig->getPlatformStatus();
  435.         if($platformStatus == ClientEnum::PLATFORM_STATUS_FREEZED && $this->user){
  436.             return $this->userPermissionUtil->canAccessAdm();
  437.         }
  438.         return ($platformStatus == ClientEnum::PLATFORM_STATUS_ACTIVED);
  439.     }
  440.     public function checkPlatformStatus(Request $request){
  441.         if($this->isPlatformActive()){
  442.             return;
  443.         }
  444.         $platformStatus $this->clientConfig->getPlatformStatus();
  445.         $ignoreRoutes = [ 
  446.             "home",
  447.             "getClientInfo",
  448.             "downgradeToFree",
  449.             "upgradeReceivers",
  450.             "removeClientCustomDomain",
  451.             "fileGetUpload",
  452.             "getInfo",
  453.             "getInfoCourse"
  454.         ];
  455.         if($platformStatus == ClientEnum::PLATFORM_STATUS_FREEZED){
  456.             if($this->user){
  457.                 return;
  458.             }
  459.             $ignoreRoutes[] = "login";
  460.             $ignoreRoutes[] = "loginPost";
  461.             $ignoreRoutes[] = "loginFast";
  462.             $ignoreRoutes[] = "loginApi";
  463.             $ignoreRoutes[] = "loginConfirm";
  464.             $ignoreRoutes[] = "loginAuthentication";
  465.             $ignoreRoutes[] = "recoverPassword";
  466.             $ignoreRoutes[] = "changePasswordPost";
  467.             $ignoreRoutes[] = "resetPasswordPost";
  468.             $ignoreRoutes[] = "userLogoff";
  469.             $ignoreRoutes[] = "logoff";
  470.             $ignoreRoutes[] = "cronGeneral";
  471.             $ignoreRoutes[] = "callbackVimeo";
  472.             $ignoreRoutes[] = "getTokenAccessRd";
  473.             $ignoreRoutes[] = "executeCalculateAnticipation";
  474.             $ignoreRoutes[] = "getEADCheckoutFee";
  475.             $ignoreRoutes[] = "deleteNfeEADCheckout";
  476.             $ignoreRoutes[] = "executeCronListEmail";
  477.             $ignoreRoutes[] = "executeCronUserSubscription";
  478.             $ignoreRoutes[] = "sendWebhookQueue";
  479.             $ignoreRoutes[] = "deleteTrashAll";
  480.             $ignoreRoutes[] = "processDataEadCheckout";
  481.             $ignoreRoutes[] = "processDataEadCheckoutBar";
  482.             $ignoreRoutes[] = "processDataPagSeguro";
  483.             $ignoreRoutes[] = "processDataPagSeguroBar";
  484.             $ignoreRoutes[] = "processDataHotmart";
  485.             $ignoreRoutes[] = "processDataHotmartBar";
  486.             $ignoreRoutes[] = "processDataPayPal";
  487.             $ignoreRoutes[] = "processDataPayPalBar";
  488.             $ignoreRoutes[] = "processDataEduzz";
  489.             $ignoreRoutes[] = "processDataEduzzBar";
  490.             $ignoreRoutes[] = "processDataProvi";
  491.             $ignoreRoutes[] = "processDataProviBar";
  492.             $ignoreRoutes[] = "processDataBraip";
  493.             $ignoreRoutes[] = "processDataBraipBar";
  494.             $ignoreRoutes[] = "processDataMonetizze";
  495.             $ignoreRoutes[] = "processDataMonetizzeBar";
  496.             $ignoreRoutes[] = "processDataKiwify";
  497.             $ignoreRoutes[] = "processDataKiwifyBar";
  498.             $ignoreRoutes[] = "processDataDigitalManagerGuru";
  499.             $ignoreRoutes[] = "processDataDigitalManagerGuruBar";
  500.             $ignoreRoutes[] = "processDataAppMax";
  501.             $ignoreRoutes[] = "processDataAppMaxBar";
  502.             $ignoreRoutes[] = "processDataDoppus";
  503.             $ignoreRoutes[] = "processDataDoppusBar";
  504.             $ignoreRoutes[] = "processDataTicto";
  505.             $ignoreRoutes[] = "processDataTictoBar";
  506.             $ignoreRoutes[] = "processDataMercadoPago";
  507.             $ignoreRoutes[] = "processDataMercadoPagoBar";
  508.             $ignoreRoutes[] = "processDataAbmex";
  509.             $ignoreRoutes[] = "processDataAbmexBar";
  510.             $ignoreRoutes[] = "processDataPerfectPay";
  511.             $ignoreRoutes[] = "processDataPerfectPayBar";
  512.             $ignoreRoutes[] = "processDataEvermart";
  513.             $ignoreRoutes[] = "processDataEvermartBar";
  514.             $ignoreRoutes[] = "processDataHeroSpark";
  515.             $ignoreRoutes[] = "processDataHeroSparkBar";
  516.             $ignoreRoutes[] = "processDataYampi";
  517.             $ignoreRoutes[] = "processDataYampiBar";
  518.             $ignoreRoutes[] = "processDataCartPanda";
  519.             $ignoreRoutes[] = "processDataCartPandaBar";
  520.             $ignoreRoutes[] = "callbackRdStation";
  521.             $ignoreRoutes[] = "callbackRdStationBar";
  522.             $ignoreRoutes[] = "callbackDinamize";
  523.             $ignoreRoutes[] = "callbackDinamizeBar";
  524.             $ignoreRoutes[] = "certificateSearchPage";
  525.             $ignoreRoutes[] = "certificatePage";
  526.             $ignoreRoutes[] = "stopNotification";
  527.             $ignoreRoutes[] = "updateUserNotification";
  528.         }
  529.         if(in_array($request->get('_route'), $ignoreRoutes)){
  530.             return;
  531.         }
  532.         $url $this->generalService->generateUrl('home');
  533.         $redirectResponse = new RedirectResponse($url);
  534.         $redirectResponse->headers->set('Content-Type''text/html');
  535.         $redirectResponse->send();
  536.         exit;
  537.     }
  538.     public function checkUserIsComplete(Request $request)
  539.     {
  540.         if($this->user){
  541.             $userRepository $this->em->getRepository(User::class);
  542.             if(!$userRepository->checkUserIsComplete($this->user)){
  543.                 $ignoreRoutes = [ 
  544.                     "userProfile"
  545.                     "logoff",
  546.                     "userLogoff",
  547.                     "getChargePage",
  548.                     "getCartItemsMenu",
  549.                     "cartInitiateCheckout",
  550.                     "checkoutOldCart",
  551.                     "checkoutNewCart",
  552.                     "checkoutCartWithCoupon",
  553.                     "checkoutClean",
  554.                     "cartIndividual",
  555.                     "cartAdd",
  556.                     "cartAddSuggestion",
  557.                     "cartCreateEnroll",
  558.                     "cartCheckoutPlanTrial",
  559.                     "addProductWhishlist",
  560.                     "applyCartCoupon",
  561.                     "cart",
  562.                     "getUserValidCarts",
  563.                     "cartChangeStatus",
  564.                     "cartCheckoutPaypal",
  565.                     "cartCheckoutPagseguro",
  566.                     "cartCheckoutMercadopago",
  567.                     "cartCheckoutCharge",
  568.                     "cartCheckoutDefault",
  569.                     "cartCheckoutCustom",
  570.                     "cartOneClickBuy",
  571.                     "cartCheckoutNewTry",
  572.                     "cartConclusion",
  573.                     "cartConclusionCheckStatus",
  574.                     "cartCouponRemove",
  575.                     "cartDelete",
  576.                     "countProductCouponByProductOffers",
  577.                     "listCouponByProductOffers",
  578.                     "testGeoSelectCep",
  579.                     "loginConfirm",
  580.                     "stopNotification",
  581.                     "updateUserNotification",
  582.                     "fileGetUpload",
  583.                     "getClientInfo",
  584.                     "downgradeToFree",
  585.                     "upgradeReceivers",
  586.                     "removeClientCustomDomain",
  587.                     "getInfo",
  588.                     "getInfoCourse"
  589.                 ];
  590.                 if(!in_array($request->get('_route'), $ignoreRoutes)){
  591.                     $url $this->generalService->generateUrl('userProfile');
  592.                     $redirectResponse = new RedirectResponse($url);
  593.                     $redirectResponse->headers->set('Content-Type''text/html');
  594.                     $redirectResponse->send();
  595.                     exit;
  596.                 }
  597.             }
  598.         }
  599.     }
  600.     public function checkUserSession(Request $request)
  601.     {
  602.         if(!$this->user){
  603.             $hash base64_encode($request->getUri());
  604.             $url $this->generalService->generateUrl('login', [ "hash" => $hash ]);
  605.             $redirectResponse = new RedirectResponse($url);
  606.             $redirectResponse->headers->set('Content-Type''text/html');
  607.             $redirectResponse->send();
  608.             exit;
  609.         }
  610.     }
  611.     public function jsonSerializer($arraySerilize) {
  612.         $encoders = [new JsonEncoder()];
  613.         $normalizers = [new ObjectNormalizer()];
  614.         $serializer = new Serializer($normalizers$encoders);
  615.         return $serializer->serialize($arraySerilize'json', [
  616.             'circular_reference_handler' => function ($object) {
  617.                 return $object->getId();
  618.             }
  619.         ]);
  620.     }
  621.     public function renderEAD($templateName$module "website")
  622.     {
  623.         //$this->data = $this->stringUtil->convertToUtf8($this->data);
  624.         $pixelService $this->generalService->getService('Marketing\\PixelService');
  625.         $pixelService->sendConversion('PageView');
  626.         return $this->render("{$module}/{$templateName}"$this->data);
  627.     }
  628.     
  629.     public function eadResponse($data, ?int $errorCode ErrorEnum::SUCCESS,
  630.                                 ?bool $serializer true, ?bool $useHttpStatus false){
  631.         $response = [ "data" => $data"error" => !empty($errorCode) ? $errorCode false ];
  632.         
  633.         //$response = $this->stringUtil->convertToUtf8($response);
  634.         if($serializer){
  635.             $response $this->jsonSerializer($response);
  636.         }else{
  637.             $response json_encode($response);
  638.         }
  639.         $httpStatus 200;
  640.         if($useHttpStatus && $errorCode && isset(ErrorEnum::HTTP_STATUS[$errorCode])){
  641.             $httpStatus ErrorEnum::HTTP_STATUS[$errorCode];
  642.         }
  643.         return new JsonResponse($response$httpStatus, [], true);
  644.     }
  645.     public function validateEntity($entityObj$groups = []){
  646.         return $this->entityUtil->setEntity($entityObj)->validateEntity($groups);
  647.     }
  648.     public function createCaptchaKey(Request $request)
  649.     {
  650.         $preKey md5("captcha");
  651.         $value md5($this->client->getDomainPrimary().date('Y-m-d H:i:s').$request->getClientIp());
  652.         $key "{$preKey}_{$value}";
  653.         $data $this->stringUtil->randomText(6);
  654.         $this->memcacheService->saveData($key$data60 60 24);
  655.         return $key;
  656.     }
  657.     public function isValidCaptcha(Request $request)
  658.     {
  659.         $this->requestUtil->setRequest($request)->setData();
  660.         $gRecaptchaResponse $this->requestUtil->getField('g-recaptcha-response');
  661.         $eCaptchaPost $this->requestUtil->getField('e-captcha');
  662.         $keyCaptcha $this->requestUtil->getField('keyCaptcha');
  663.         $gSecretKey $this->configuration->get('recaptcha_secret_v2');
  664.         $gSecretKeyV3 $this->configuration->get('recaptcha_secret_v3');
  665.         $configDefault $this->configuration->getDefaultRecaptcha();
  666.         $host $request->getHost();
  667.         if(
  668.             !empty($gSecretKey) || 
  669.             !empty($gSecretKeyV3) || 
  670.             stristr($host".eadplataforma.app")
  671.         ){
  672.             if(!empty($gRecaptchaResponse)){
  673.                 $ip $request->getClientIp();
  674.                 $secret $configDefault->defaultRecaptchaSecretV3;
  675.                 if(!stristr($host".eadplataforma.app")){
  676.                     if(!empty($gSecretKeyV3)){
  677.                         $secret $gSecretKeyV3;
  678.                     }else if(!empty($gSecretKey)){
  679.                         $secret $gSecretKey;
  680.                     }
  681.                 }
  682.                 $dataUrl = [
  683.                     "secret" => $secret,
  684.                     "response" => $gRecaptchaResponse,
  685.                     "remoteip" => $ip,
  686.                 ];
  687.                 $dataUrl http_build_query($dataUrl);
  688.                 $url "https://www.google.com/recaptcha/api/siteverify?{$dataUrl}";
  689.                 $return file_get_contents($url);
  690.                 $return json_decode($return);
  691.                 if(!$return->success){
  692.                     return false;
  693.                 }
  694.                 if(isset($return->score)){
  695.                     if($return->score <= 0.7){
  696.                         return false;
  697.                     }
  698.                     return true;
  699.                 }
  700.                 return false;
  701.             }
  702.             return false;
  703.         }
  704.         return true;
  705.         
  706.         if(!empty($this->memcacheService->getData($keyCaptcha))){
  707.             return ($eCaptchaPost == $this->memcacheService->getData($keyCaptcha));
  708.         }else{
  709.             $this->memcacheService->deleteData($keyCaptcha);
  710.         }
  711.         return false;
  712.     }
  713. }