src/Controller/Core/BaseFrontController.php line 51

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Core;
  3. use App\Entity\BaseForm;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use App\Manager\InfoManager;
  6. use Symfony\Component\Form\FormInterface;
  7. use Symfony\Component\Form\FormView;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. class BaseFrontController extends AbstractController
  10. {
  11.     protected array $locals = [];
  12.     protected RequestStack $requestStack;
  13.     protected InfoManager $infoManager;
  14.     /**
  15.      * @param RequestStack $requestStack
  16.      */
  17.     public function __construct(RequestStack $requestStackInfoManager $infoManager)
  18.     {
  19.         $this->requestStack $requestStack;
  20.         $this->infoManager $infoManager;
  21.         $this->locals['menu_active'] = '';
  22.     }
  23.     protected function getForm(string $typeBaseForm $entitystring $route, array $parameters = []): FormInterface
  24.     {
  25.         return $this->createForm($type$entity, [
  26.             'action' => $this->generateUrl($route$parameters),
  27.             'method' => 'POST',
  28.         ]);
  29.     }
  30.     protected function getFormView(string $typeBaseForm $entitystring $route, array $parameters = []): FormView
  31.     {
  32.         return $this->getForm($type$entity$route$parameters)->createView();
  33.     }
  34.     protected function saveFormSession(string $keyBaseForm $value)
  35.     {
  36.         $session $this->requestStack->getSession();
  37.         $session->set($key$value);
  38.     }
  39.     protected function getFormSession(string $key$default null): ?BaseForm
  40.     {
  41.         $session $this->requestStack->getSession();
  42.         $form $session->get($key$default);
  43.         $session->remove($key);
  44.         return $form;
  45.     }
  46.     protected function captchaValidate(){
  47.         $request $this->requestStack->getCurrentRequest();
  48.         $captcha $request->request->get('g-recaptcha-response','');
  49.         $info $this->infoManager->find(1);
  50.         if( !($info->getCaptchaSite() && 
  51.             $info->getCaptchaSecret() &&
  52.             $info->getCaptchaShow()) ) {
  53.             return true;
  54.         }
  55.         $captcha_url 'https://www.google.com/recaptcha/api/siteverify';
  56.         $captcha_data = array(
  57.             'secret' => $info->getCaptchaSecret(),
  58.             'response' => $captcha,
  59.             'remoteip' => $request->getClientIp()
  60.         );
  61.         $resp $this->googleCurl($captcha_url$captcha_data);
  62.         
  63.         if ( array_key_exists('success',$resp) && $resp['success'] ) {
  64.             return true;
  65.         }
  66.         return false;
  67.     }
  68.     protected function googleCurl($url$data): ? array
  69.     {
  70.             
  71.         $ch curl_init($url);
  72.         curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  73.         curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($data));
  74.         curl_setopt($chCURLOPT_POST1);
  75.         curl_setopt($chCURLOPT_CONNECTTIMEOUT ,3);
  76.         curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
  77.         curl_setopt($chCURLOPT_TIMEOUT20);
  78.         
  79.         $response curl_exec($ch);
  80.         curl_close($ch);
  81.         
  82.         return json_decode($responsetrue);
  83.     }
  84. }