50 lines
1022 B
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);
|
|
}
|
|
}
|