Add captcha tokens management.

This commit is contained in:
2023-08-22 00:15:35 +06:00
parent d2b29e2225
commit 742b0feaf0
38 changed files with 832 additions and 6 deletions

View File

@@ -0,0 +1,39 @@
<?php declare(strict_types=1);
namespace App\Services\CaptchaToken;
use App\Contracts\GenerateTokenCommand;
use App\Models\CaptchaToken;
use App\Models\User;
final readonly class CaptchaTokenHandler
{
public function __construct(
private GenerateTokenCommand $generatePublicTokenCommand,
private GenerateTokenCommand $generatePrivateTokenCommand
) { }
public function handleStore(array $data, User $user): CaptchaToken
{
$captchaToken = new CaptchaToken();
$captchaToken->public_token = $this->generatePublicTokenCommand->unique(CaptchaToken::query(), 'public_token');
$captchaToken->private_token = $this->generatePrivateTokenCommand->unique(CaptchaToken::query(), 'private_token');
$captchaToken->user_id = $user->id;
$captchaToken->fill($data)->save();
return $captchaToken;
}
public function handleUpdate(CaptchaToken $captchaToken, array $data): CaptchaToken
{
$captchaToken->update($data);
$captchaToken->touch();
return $captchaToken;
}
public function handleDestroy(CaptchaToken $captchaToken): void
{
$captchaToken->delete();
}
}