Allow all in country in blueprints

Fixes #2163
This commit is contained in:
Owen
2025-12-24 10:49:18 -05:00
parent 8fa62a0908
commit 40eeb9b7cb

View File

@@ -111,32 +111,30 @@ export const RuleSchema = z
.refine( .refine(
(rule) => { (rule) => {
if (rule.match === "country") { if (rule.match === "country") {
// Check if it's a valid 2-letter country code // Check if it's a valid 2-letter country code or "ALL"
return /^[A-Z]{2}$/.test(rule.value); return /^[A-Z]{2}$/.test(rule.value) || rule.value === "ALL";
} }
return true; return true;
}, },
{ {
path: ["value"], path: ["value"],
message: message:
"Value must be a 2-letter country code when match is 'country'" "Value must be a 2-letter country code or 'ALL' when match is 'country'"
} }
) )
.refine( .refine(
(rule) => { (rule) => {
if (rule.match === "asn") { if (rule.match === "asn") {
// Check if it's either AS<number> format or just a number // Check if it's either AS<number> format or "ALL"
const asNumberPattern = /^AS\d+$/i; const asNumberPattern = /^AS\d+$/i;
const isASFormat = asNumberPattern.test(rule.value); return asNumberPattern.test(rule.value) || rule.value === "ALL";
const isNumeric = /^\d+$/.test(rule.value);
return isASFormat || isNumeric;
} }
return true; return true;
}, },
{ {
path: ["value"], path: ["value"],
message: message:
"Value must be either 'AS<number>' format or a number when match is 'asn'" "Value must be 'AS<number>' format or 'ALL' when match is 'asn'"
} }
); );