From 19273ddbd5c7cb2439f02675e4c3b5054111216c Mon Sep 17 00:00:00 2001 From: Milo Schwartz Date: Wed, 12 Feb 2025 21:52:58 -0500 Subject: [PATCH] use zod for rules ip validation --- eslint.config.js | 9 +++++++++ server/auth/sessions/app.ts | 1 + server/lib/validators.ts | 32 ++++---------------------------- 3 files changed, 14 insertions(+), 28 deletions(-) create mode 100644 eslint.config.js diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..71dc862 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,9 @@ +// eslint.config.js +export default [ + { + rules: { + semi: "error", + "prefer-const": "error" + } + } +]; diff --git a/server/auth/sessions/app.ts b/server/auth/sessions/app.ts index e58ff81..18ea072 100644 --- a/server/auth/sessions/app.ts +++ b/server/auth/sessions/app.ts @@ -95,6 +95,7 @@ export async function validateSessionToken( } export async function invalidateSession(sessionId: string): Promise { + await db.delete(resourceSessions).where(eq(resourceSessions.userSessionId, sessionId)); await db.delete(sessions).where(eq(sessions.sessionId, sessionId)); } diff --git a/server/lib/validators.ts b/server/lib/validators.ts index ffe471b..0aa590e 100644 --- a/server/lib/validators.ts +++ b/server/lib/validators.ts @@ -1,35 +1,11 @@ +import z from "zod"; + export function isValidCIDR(cidr: string): boolean { - // Match CIDR pattern (e.g., "192.168.0.0/24") - const cidrPattern = - /^([0-9]{1,3}\.){3}[0-9]{1,3}\/([0-9]|[1-2][0-9]|3[0-2])$/; - - if (!cidrPattern.test(cidr)) { - return false; - } - - // Validate IP address part - const ipPart = cidr.split("/")[0]; - const octets = ipPart.split("."); - - return octets.every((octet) => { - const num = parseInt(octet, 10); - return num >= 0 && num <= 255; - }); + return z.string().cidr().safeParse(cidr).success; } export function isValidIP(ip: string): boolean { - const ipPattern = /^([0-9]{1,3}\.){3}[0-9]{1,3}$/; - - if (!ipPattern.test(ip)) { - return false; - } - - const octets = ip.split("."); - - return octets.every((octet) => { - const num = parseInt(octet, 10); - return num >= 0 && num <= 255; - }); + return z.string().ip().safeParse(ip).success; } export function isValidUrlGlobPattern(pattern: string): boolean {