新增maxmind数据库本地判断国家,并且将优先级调整至最高
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* SHOW_SITE_COUNTRY 允许列表解析与比对
|
||||
*/
|
||||
class CountryAllowlist
|
||||
{
|
||||
/**
|
||||
* @param string $config 逗号分隔国家码,如 US,GB,CA
|
||||
* @return string[]
|
||||
*/
|
||||
public static function parse($config)
|
||||
{
|
||||
$config = strtoupper(trim((string) $config));
|
||||
if ($config === '') {
|
||||
return [];
|
||||
}
|
||||
$parts = preg_split('/\s*,\s*/', $config);
|
||||
$out = [];
|
||||
foreach ($parts as $part) {
|
||||
$part = trim($part);
|
||||
if ($part !== '') {
|
||||
$out[] = $part;
|
||||
}
|
||||
}
|
||||
return array_values(array_unique($out));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $countryCode
|
||||
* @param string[] $allowlist
|
||||
*/
|
||||
public static function isAllowed($countryCode, array $allowlist)
|
||||
{
|
||||
if ($allowlist === []) {
|
||||
return true;
|
||||
}
|
||||
if ($countryCode === null || $countryCode === '') {
|
||||
return false;
|
||||
}
|
||||
return in_array(strtoupper($countryCode), $allowlist, true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user