40 lines
1.2 KiB
PHP
40 lines
1.2 KiB
PHP
<?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();
|
|
}
|
|
}
|