From a934049ea552d197228a205c45982edfd670547a Mon Sep 17 00:00:00 2001 From: netkas Date: Thu, 30 Jan 2025 12:41:04 -0500 Subject: [PATCH] Changed Format --- src/Socialbox/Managers/CaptchaManager.php | 324 +++++++++++----------- 1 file changed, 162 insertions(+), 162 deletions(-) diff --git a/src/Socialbox/Managers/CaptchaManager.php b/src/Socialbox/Managers/CaptchaManager.php index 2ccba7e..fbb9bec 100644 --- a/src/Socialbox/Managers/CaptchaManager.php +++ b/src/Socialbox/Managers/CaptchaManager.php @@ -1,44 +1,62 @@ getUuid(); - } + // If the peer_uuid is a RegisteredPeerRecord, get the UUID + if($peer_uuid instanceof PeerRecord) + { + $peer_uuid = $peer_uuid->getUuid(); + } - $answer = Utilities::randomString(6, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'); - $current_time = (new DateTime())->setTimestamp(time())->format('Y-m-d H:i:s'); + $answer = Utilities::randomString(6, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'); + $current_time = (new DateTime())->setTimestamp(time())->format('Y-m-d H:i:s'); - if(!self::captchaExists($peer_uuid)) - { - Logger::getLogger()->debug('Creating a new captcha record for peer ' . $peer_uuid); - $statement = Database::getConnection()->prepare("INSERT INTO captcha_images (peer_uuid, created, answer) VALUES (?, ?, ?)"); - $statement->bindParam(1, $peer_uuid); + if(!self::captchaExists($peer_uuid)) + { + Logger::getLogger()->debug('Creating a new captcha record for peer ' . $peer_uuid); + $statement = Database::getConnection()->prepare("INSERT INTO captcha_images (peer_uuid, created, answer) VALUES (?, ?, ?)"); + $statement->bindParam(1, $peer_uuid); + $statement->bindParam(2, $current_time); + $statement->bindParam(3, $answer); + + try + { + $statement->execute(); + } + catch(PDOException $e) + { + throw new DatabaseOperationException('Failed to create a captcha in the database', $e); + } + + return $answer; + } + + Logger::getLogger()->debug('Updating an existing captcha record for peer ' . $peer_uuid); + $statement = Database::getConnection()->prepare("UPDATE captcha_images SET answer=?, status='UNSOLVED', created=? WHERE peer_uuid=?"); + $statement->bindParam(1, $answer); $statement->bindParam(2, $current_time); - $statement->bindParam(3, $answer); + $statement->bindParam(3, $peer_uuid); try { @@ -46,152 +64,134 @@ class CaptchaManager } catch(PDOException $e) { - throw new DatabaseOperationException('Failed to create a captcha in the database', $e); + throw new DatabaseOperationException('Failed to update a captcha in the database', $e); } return $answer; } - Logger::getLogger()->debug('Updating an existing captcha record for peer ' . $peer_uuid); - $statement = Database::getConnection()->prepare("UPDATE captcha_images SET answer=?, status='UNSOLVED', created=? WHERE peer_uuid=?"); - $statement->bindParam(1, $answer); - $statement->bindParam(2, $current_time); - $statement->bindParam(3, $peer_uuid); - - try + /** + * Answers a captcha for the given peer UUID. + * + * @param string|PeerRecord $peer_uuid The UUID of the peer to answer the captcha for. + * @param string $answer The answer to the captcha. + * @return bool True if the answer is correct, false otherwise. + * @throws DatabaseOperationException If the operation fails. + */ + public static function answerCaptcha(string|PeerRecord $peer_uuid, string $answer): bool { - $statement->execute(); - } - catch(PDOException $e) - { - throw new DatabaseOperationException('Failed to update a captcha in the database', $e); - } + if($peer_uuid instanceof PeerRecord) + { + $peer_uuid = $peer_uuid->getUuid(); + } - return $answer; - } + // Return false if the captcha does not exist + if(!self::captchaExists($peer_uuid)) + { + return false; + } - /** - * Answers a captcha for the given peer UUID. - * - * @param string|PeerRecord $peer_uuid The UUID of the peer to answer the captcha for. - * @param string $answer The answer to the captcha. - * @return bool True if the answer is correct, false otherwise. - * @throws DatabaseOperationException If the operation fails. - */ - public static function answerCaptcha(string|PeerRecord $peer_uuid, string $answer): bool - { - if($peer_uuid instanceof PeerRecord) - { - $peer_uuid = $peer_uuid->getUuid(); - } + $captcha = self::getCaptcha($peer_uuid); - // Return false if the captcha does not exist - if(!self::captchaExists($peer_uuid)) - { - return false; - } + // Return false if the captcha has already been solved + if($captcha->getStatus() === CaptchaStatus::SOLVED) + { + return false; + } - $captcha = self::getCaptcha($peer_uuid); + // Return false if the captcha is older than 5 minutes + if ($captcha->isExpired()) + { + return false; + } - // Return false if the captcha has already been solved - if($captcha->getStatus() === CaptchaStatus::SOLVED) - { - return false; - } + // Verify the answer + if($captcha->getAnswer() !== $answer) + { + return false; + } - // Return false if the captcha is older than 5 minutes - if ($captcha->isExpired()) - { - return false; - } - - // Verify the answer - if($captcha->getAnswer() !== $answer) - { - return false; - } - - $statement = Database::getConnection()->prepare("UPDATE captcha_images SET status='SOLVED', answered=NOW() WHERE peer_uuid=?"); - $statement->bindParam(1, $peer_uuid); - - try - { - $statement->execute(); - } - catch(PDOException $e) - { - throw new DatabaseOperationException('Failed to update a captcha in the database', $e); - } - - return true; - } - - /** - * Retrieves the captcha record for the given peer UUID. - * - * @param string|PeerRecord $peer_uuid The UUID of the peer to retrieve the captcha for. - * @return CaptchaRecord|null The captcha record. - * @throws DatabaseOperationException If the operation fails. - */ - public static function getCaptcha(string|PeerRecord $peer_uuid): ?CaptchaRecord - { - // If the peer_uuid is a RegisteredPeerRecord, get the UUID - if($peer_uuid instanceof PeerRecord) - { - $peer_uuid = $peer_uuid->getUuid(); - } - - Logger::getLogger()->debug('Getting the captcha record for peer ' . $peer_uuid); - - try - { - $statement = Database::getConnection()->prepare("SELECT * FROM captcha_images WHERE peer_uuid=? LIMIT 1"); + $statement = Database::getConnection()->prepare("UPDATE captcha_images SET status='SOLVED', answered=NOW() WHERE peer_uuid=?"); $statement->bindParam(1, $peer_uuid); - $statement->execute(); - $result = $statement->fetch(); + + try + { + $statement->execute(); + } + catch(PDOException $e) + { + throw new DatabaseOperationException('Failed to update a captcha in the database', $e); + } + + return true; } - catch(PDOException $e) + + /** + * Retrieves the captcha record for the given peer UUID. + * + * @param string|PeerRecord $peer_uuid The UUID of the peer to retrieve the captcha for. + * @return CaptchaRecord|null The captcha record. + * @throws DatabaseOperationException If the operation fails. + */ + public static function getCaptcha(string|PeerRecord $peer_uuid): ?CaptchaRecord { - throw new DatabaseOperationException('Failed to get a captcha from the database', $e); + // If the peer_uuid is a RegisteredPeerRecord, get the UUID + if($peer_uuid instanceof PeerRecord) + { + $peer_uuid = $peer_uuid->getUuid(); + } + + Logger::getLogger()->debug('Getting the captcha record for peer ' . $peer_uuid); + + try + { + $statement = Database::getConnection()->prepare("SELECT * FROM captcha_images WHERE peer_uuid=? LIMIT 1"); + $statement->bindParam(1, $peer_uuid); + $statement->execute(); + $result = $statement->fetch(); + } + catch(PDOException $e) + { + throw new DatabaseOperationException('Failed to get a captcha from the database', $e); + } + + if($result === false) + { + return null; + } + + return CaptchaRecord::fromArray($result); } - if($result === false) + /** + * Checks if a captcha exists for the given peer UUID. + * + * @param string|PeerRecord $peer_uuid The UUID of the peer to check for a captcha. + * @return bool True if a captcha exists, false otherwise. + * @throws DatabaseOperationException If the operation fails. + */ + public static function captchaExists(string|PeerRecord $peer_uuid): bool { - return null; + // If the peer_uuid is a RegisteredPeerRecord, get the UUID + if($peer_uuid instanceof PeerRecord) + { + $peer_uuid = $peer_uuid->getUuid(); + } + + Logger::getLogger()->debug('Checking if a captcha exists for peer ' . $peer_uuid); + + try + { + $statement = Database::getConnection()->prepare("SELECT COUNT(*) FROM captcha_images WHERE peer_uuid=?"); + $statement->bindParam(1, $peer_uuid); + $statement->execute(); + $result = $statement->fetchColumn(); + } + catch(PDOException $e) + { + throw new DatabaseOperationException('Failed to check if a captcha exists in the database', $e); + } + + return $result > 0; } - - return CaptchaRecord::fromArray($result); - } - - /** - * Checks if a captcha exists for the given peer UUID. - * - * @param string|PeerRecord $peer_uuid The UUID of the peer to check for a captcha. - * @return bool True if a captcha exists, false otherwise. - * @throws DatabaseOperationException If the operation fails. - */ - public static function captchaExists(string|PeerRecord $peer_uuid): bool - { - // If the peer_uuid is a RegisteredPeerRecord, get the UUID - if($peer_uuid instanceof PeerRecord) - { - $peer_uuid = $peer_uuid->getUuid(); - } - - Logger::getLogger()->debug('Checking if a captcha exists for peer ' . $peer_uuid); - - try - { - $statement = Database::getConnection()->prepare("SELECT COUNT(*) FROM captcha_images WHERE peer_uuid=?"); - $statement->bindParam(1, $peer_uuid); - $statement->execute(); - $result = $statement->fetchColumn(); - } - catch(PDOException $e) - { - throw new DatabaseOperationException('Failed to check if a captcha exists in the database', $e); - } - - return $result > 0; - } -} \ No newline at end of file + } \ No newline at end of file