| 
				Server : Apache System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : matalashes ( 1004) PHP Version : 8.1.29 Disable Function : NONE Directory : /home/matalashes/public_html/simulasikite.mata-lashes.com/system/Honeypot/  | 
Upload File :  | 
<?php
/**
 * This file is part of CodeIgniter 4 framework.
 *
 * (c) CodeIgniter Foundation <admin@codeigniter.com>
 *
 * For the full copyright and license information, please view
 * the LICENSE file that was distributed with this source code.
 */
namespace CodeIgniter\Honeypot;
use CodeIgniter\Honeypot\Exceptions\HoneypotException;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Config\Honeypot as HoneypotConfig;
/**
 * class Honeypot
 */
class Honeypot
{
    /**
     * Our configuration.
     *
     * @var HoneypotConfig
     */
    protected $config;
    /**
     * Constructor.
     *
     * @throws HoneypotException
     */
    public function __construct(HoneypotConfig $config)
    {
        $this->config = $config;
        if (! $this->config->hidden) {
            throw HoneypotException::forNoHiddenValue();
        }
        if (empty($this->config->container) || strpos($this->config->container, '{template}') === false) {
            $this->config->container = '<div style="display:none">{template}</div>';
        }
        if ($this->config->template === '') {
            throw HoneypotException::forNoTemplate();
        }
        if ($this->config->name === '') {
            throw HoneypotException::forNoNameField();
        }
    }
    /**
     * Checks the request if honeypot field has data.
     */
    public function hasContent(RequestInterface $request)
    {
        return ! empty($request->getPost($this->config->name));
    }
    /**
     * Attaches Honeypot template to response.
     */
    public function attachHoneypot(ResponseInterface $response)
    {
        $prepField = $this->prepareTemplate($this->config->template);
        $body = $response->getBody();
        $body = str_ireplace('</form>', $prepField . '</form>', $body);
        $response->setBody($body);
    }
    /**
     * Prepares the template by adding label
     * content and field name.
     */
    protected function prepareTemplate(string $template): string
    {
        $template = str_ireplace('{label}', $this->config->label, $template);
        $template = str_ireplace('{name}', $this->config->name, $template);
        if ($this->config->hidden) {
            $template = str_ireplace('{template}', $template, $this->config->container);
        }
        return $template;
    }
}