75 lines
2.9 KiB
PHP
75 lines
2.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace KupShop\AgeVerifyBundle\Utils;
|
|
|
|
use Psr\Log\LoggerInterface;
|
|
use Psr\Log\LogLevel;
|
|
use Symfony\Contracts\Service\Attribute\Required;
|
|
|
|
class AdultoUtil
|
|
{
|
|
private const API_URL = 'https://api.result.adulto.cz';
|
|
private const REQUIRED_AGE = 18;
|
|
|
|
#[Required]
|
|
public AgeVerifyUtil $ageVerifyUtil;
|
|
#[Required]
|
|
public LoggerInterface $logger;
|
|
|
|
public function checkAdultoUid(string $adultoUid = ''): array
|
|
{
|
|
// na lokálu nechci ověřovat přes Adulto protože na to nemaj žádnej sandbox
|
|
if (isLocalDevelopment()) {
|
|
return ['success' => true, 'data' => 'Verification skipped in local development.'];
|
|
}
|
|
|
|
if (empty($adultoUid)) {
|
|
return ['success' => false, 'message' => 'Váš věk nebyl ověřen.'];
|
|
}
|
|
|
|
$klic = \Settings::getDefault()['age_verify']['adulto']['private_key'] ?? '';
|
|
|
|
$api_url = self::API_URL.'/?secret='.$klic.'&response='.$adultoUid;
|
|
|
|
// Volání API
|
|
$response = file_get_contents($api_url);
|
|
// $response = '{"adultocz-verify-id":"2024378270","adultocz-verify-uid":"454686ff2e5b6df020ccbc9242497aa587201319674d","adultocz-visit-cookie":"1548674d-79a7-4edf-9c48-3b25893c348c-1733484546544","adultocz-visit-time":"2024-12-06 12:29:06","adultocz-verify-time":"2024-12-06 12:32:40","adultocz-verify-method":"bankid","adultocz-verify-status":"true","adultocz-verify-age":"18","adultocz-verify-adult":"true"}';
|
|
|
|
$this->logger->log(LogLevel::INFO, $response);
|
|
|
|
// Ověření API komunikace
|
|
if ($response === false) {
|
|
return ['success' => false, 'message' => 'Chyba při komunikaci s Adulto.'];
|
|
}
|
|
|
|
// JSON odpověď API
|
|
$adultocz = json_decode($response);
|
|
|
|
// Podmínka pro úspěšné ověření
|
|
if (
|
|
$adultocz // Existuje JSON odpověď
|
|
&& isset($adultocz->{'adultocz-verify-adult'})
|
|
&& $adultocz->{'adultocz-verify-adult'} === 'true'
|
|
&& isset($adultocz->{'adultocz-verify-age'})
|
|
&& $adultocz->{'adultocz-verify-age'} == self::REQUIRED_AGE
|
|
) {
|
|
$this->ageVerifyUtil->setVerificationData('Y', 'adulto', data: $response);
|
|
// Smazání cookie pro zapomenutí ověření
|
|
setcookie('adultocz_local', '', time() - 3600, '/', '', true, true);
|
|
|
|
return ['success' => true, 'data' => $adultocz];
|
|
} elseif ($adultocz
|
|
&& isset($adultocz->{'adultocz-verify-age'})
|
|
&& $adultocz->{'adultocz-verify-age'} != self::REQUIRED_AGE
|
|
) {
|
|
// Ověřený věk není dostatečný
|
|
return ['success' => false, 'message' => 'Nemůžeme prodávat osobám mladším '.self::REQUIRED_AGE.' let.'];
|
|
} else {
|
|
// Ověřený věk není dostatečný
|
|
return ['success' => false, 'message' => 'Neplatná odpověď při komunikaci s API.'];
|
|
}
|
|
}
|
|
}
|