<?php declare(strict_types = 1); namespace MailPoet\Captcha; if (!defined('ABSPATH')) exit; use MailPoet\Util\Security; use MailPoet\WP\Functions as WPFunctions; class CaptchaSession { const EXPIRATION = 1800; // 30 minutes const ID_LENGTH = 32; const SESSION_HASH_KEY = 'hash'; const SESSION_FORM_KEY = 'form'; private WPFunctions $wp; public function __construct( WPFunctions $wp ) { $this->wp = $wp; } public function generateSessionId(): string { return Security::generateRandomString(self::ID_LENGTH); } public function reset(string $sessionId): void { $formKey = $this->getKey($sessionId, self::SESSION_FORM_KEY); $hashKey = $this->getKey($sessionId, self::SESSION_HASH_KEY); $this->wp->deleteTransient($formKey); $this->wp->deleteTransient($hashKey); } public function setFormData(string $sessionId, array $data): void { $key = $this->getKey($sessionId, self::SESSION_FORM_KEY); $this->wp->setTransient($key, $data, self::EXPIRATION); } public function getFormData(string $sessionId) { $key = $this->getKey($sessionId, self::SESSION_FORM_KEY); return $this->wp->getTransient($key); } public function setCaptchaHash(string $sessionId, $hash): void { $key = $this->getKey($sessionId, self::SESSION_HASH_KEY); $this->wp->setTransient($key, $hash, self::EXPIRATION); } public function getCaptchaHash(string $sessionId) { $key = $this->getKey($sessionId, self::SESSION_HASH_KEY); return $this->wp->getTransient($key); } private function getKey(string $sessionId, string $type): string { return implode('_', ['MAILPOET', $sessionId, $type]); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Validator | Folder | 0755 |
|
|
CaptchaConstants.php | File | 664 B | 0644 |
|
CaptchaFormRenderer.php | File | 8.26 KB | 0644 |
|
CaptchaHooks.php | File | 3 KB | 0644 |
|
CaptchaPhrase.php | File | 891 B | 0644 |
|
CaptchaRenderer.php | File | 2.35 KB | 0644 |
|
CaptchaSession.php | File | 1.63 KB | 0644 |
|
CaptchaUrlFactory.php | File | 1.88 KB | 0644 |
|
PageRenderer.php | File | 2.12 KB | 0644 |
|
ReCaptchaRenderer.php | File | 1.08 KB | 0644 |
|
ReCaptchaValidator.php | File | 1.67 KB | 0644 |
|
index.php | File | 6 B | 0644 |
|