Make sure the domain is defined on a http resource

This commit is contained in:
Owen
2026-05-05 20:07:06 -07:00
parent 7436aebca7
commit 7d67fb9984
2 changed files with 26 additions and 36 deletions

View File

@@ -74,16 +74,14 @@ const createSiteResourceSchema = z
.refine( .refine(
(data) => { (data) => {
if (data.mode === "host") { if (data.mode === "host") {
if (data.mode == "host") { // Check if it's a valid IP address using zod (v4 or v6)
// Check if it's a valid IP address using zod (v4 or v6) const isValidIP = z
const isValidIP = z // .union([z.ipv4(), z.ipv6()])
// .union([z.ipv4(), z.ipv6()]) .union([z.ipv4()]) // for now lets just do ipv4 until we verify ipv6 works everywhere
.union([z.ipv4()]) // for now lets just do ipv4 until we verify ipv6 works everywhere .safeParse(data.destination).success;
.safeParse(data.destination).success;
if (isValidIP) { if (isValidIP) {
return true; return true;
}
} }
// Check if it's a valid domain (hostname pattern, TLD not required) // Check if it's a valid domain (hostname pattern, TLD not required)
@@ -96,17 +94,12 @@ const createSiteResourceSchema = z
data.alias.trim() !== ""; data.alias.trim() !== "";
return isValidDomain && isValidAlias; // require the alias to be set in the case of domain return isValidDomain && isValidAlias; // require the alias to be set in the case of domain
} } else if (data.mode === "http") {
return true; // we have to have a domainId defined
}, if (!data.domainId) {
{ return false;
message: }
"Destination must be a valid IPV4 address or valid domain AND alias is required" } else if (data.mode === "cidr") {
}
)
.refine(
(data) => {
if (data.mode === "cidr") {
// Check if it's a valid CIDR (v4 or v6) // Check if it's a valid CIDR (v4 or v6)
const isValidCIDR = z const isValidCIDR = z
.union([z.cidrv4(), z.cidrv6()]) .union([z.cidrv4(), z.cidrv6()])
@@ -116,7 +109,8 @@ const createSiteResourceSchema = z
return true; return true;
}, },
{ {
message: "Destination must be a valid CIDR notation for cidr mode" message:
"Destination must be a valid IPV4 address or valid domain AND alias is required"
} }
) )
.refine( .refine(

View File

@@ -104,6 +104,17 @@ const updateSiteResourceSchema = z
data.alias.trim() !== ""; data.alias.trim() !== "";
return isValidDomain && isValidAlias; // require the alias to be set in the case of domain return isValidDomain && isValidAlias; // require the alias to be set in the case of domain
} else if (data.mode === "cidr" && data.destination) {
// Check if it's a valid CIDR (v4 or v6)
const isValidCIDR = z
.union([z.cidrv4(), z.cidrv6()])
.safeParse(data.destination).success;
return isValidCIDR;
} else if (data.mode === "http") {
// we have to have a domainId defined
if (!data.domainId) {
return false;
}
} }
return true; return true;
}, },
@@ -112,21 +123,6 @@ const updateSiteResourceSchema = z
"Destination must be a valid IP address or valid domain AND alias is required" "Destination must be a valid IP address or valid domain AND alias is required"
} }
) )
.refine(
(data) => {
if (data.mode === "cidr" && data.destination) {
// Check if it's a valid CIDR (v4 or v6)
const isValidCIDR = z
.union([z.cidrv4(), z.cidrv6()])
.safeParse(data.destination).success;
return isValidCIDR;
}
return true;
},
{
message: "Destination must be a valid CIDR notation for cidr mode"
}
)
.refine( .refine(
(data) => { (data) => {
if (data.mode !== "http") return true; if (data.mode !== "http") return true;