libra/app/Services/CaptchaService.php

50 lines
1022 B
PHP

<?php
namespace App\Services;
class CaptchaService
{
private const SESSION_KEY = 'captcha_answer';
/**
* Generate a new math captcha question.
*
* @return array{question: string, question_ar: string}
*/
public function generate(): array
{
$num1 = rand(1, 10);
$num2 = rand(1, 10);
$answer = $num1 + $num2;
session([self::SESSION_KEY => $answer]);
return [
'question' => "What is {$num1} + {$num2}?",
'question_ar' => "ما هو {$num1} + {$num2}؟",
];
}
/**
* Validate the user's captcha answer.
*/
public function validate(mixed $answer): bool
{
$expected = session(self::SESSION_KEY);
if (is_null($expected)) {
return false;
}
return (int) $answer === (int) $expected;
}
/**
* Clear the current captcha from session.
*/
public function clear(): void
{
session()->forget(self::SESSION_KEY);
}
}