vendor/gregwar/captcha-bundle/Controller/CaptchaController.php line 36
<?phpdeclare(strict_types=1);namespace Gregwar\CaptchaBundle\Controller;use Gregwar\CaptchaBundle\Generator\CaptchaGenerator;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;/*** Generates a captcha via a URL.** @author Jeremy Livingston <jeremy.j.livingston@gmail.com>*/class CaptchaController{/** @var CaptchaGenerator */private $captchaGenerator;/** @var array<mixed> */private $config;/*** CaptchaController constructor.** @param CaptchaGenerator $captchaGenerator* @param array<mixed> $config*/public function __construct(CaptchaGenerator $captchaGenerator, array $config){$this->captchaGenerator = $captchaGenerator;$this->config = $config;}public function generateCaptchaAction(Request $request, string $key): Response{$session = $request->getSession();$whitelistKey = $this->config['whitelist_key'];$isOk = false;if ($session->has($whitelistKey)) {$keys = $session->get($whitelistKey);if (is_array($keys) && in_array($key, $keys)) {$isOk = true;}}if (!$isOk) {return $this->error($this->config);}$persistedOptions = $session->get($key, array());$options = array_merge($this->config, $persistedOptions);$phrase = $this->captchaGenerator->getPhrase($options);$this->captchaGenerator->setPhrase($phrase);$persistedOptions['phrase'] = $phrase;$session->set($key, $persistedOptions);$response = new Response($this->captchaGenerator->generate($options));$response->headers->set('Content-type', 'image/jpeg');$response->headers->set('Pragma', 'no-cache');$response->headers->set('Cache-Control', 'no-cache');return $response;}/*** @param array<mixed> $options** @return Response*/private function error(array $options): Response{$this->captchaGenerator->setPhrase('');$response = new Response($this->captchaGenerator->generate($options));$response->setStatusCode(428);$response->headers->set('Content-type', 'image/jpeg');$response->headers->set('Pragma', 'no-cache');$response->headers->set('Cache-Control', 'no-cache');return $response;}}