View file app/Controllers/CaptchaController.php

File size: 732B
<?php

declare(strict_types=1);

namespace App\Controllers;

use App\Services\Session;
use Psr\Http\Message\ResponseInterface as Response;
use Visavi\Captcha\CaptchaBuilder;

/**
 * CaptchaController
 */
class CaptchaController extends Controller
{
    public function __construct(
        protected Session $session,
    ) {}

    /**
     * Captcha
     *
     * @param Response $response
     *
     * @return Response
     */
    public function captcha(Response $response): Response
    {
        $captcha = new CaptchaBuilder();
        $this->session->set('captcha', $captcha->getPhrase());

        $response->getBody()->write($captcha->render());

        return $response->withHeader('Content-Type', 'image/gif');
    }
}