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 {