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();
 | 
						|
    }
 | 
						|
}
 |