From 466d356ad1cffbb3a08662c360db7cb4b5c0b67e Mon Sep 17 00:00:00 2001 From: Marcos Paulo Diniz Date: Wed, 5 Aug 2026 08:34:12 -0300 Subject: [PATCH] refactor(validation): use Zod URL protocols Refs #3821 --- client/src/Validation/notifications.ts | 6 +----- server/src/api/validation/notificationValidation.ts | 7 ++++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/client/src/Validation/notifications.ts b/client/src/Validation/notifications.ts index 3058d3f66..f7490d526 100644 --- a/client/src/Validation/notifications.ts +++ b/client/src/Validation/notifications.ts @@ -35,11 +35,7 @@ const rocketChatSchema = baseSchema.extend({ address: z .string() .min(1, "Webhook URL is required") - .url("Please enter a valid URL") - .refine( - (url) => /^https?:\/\//i.test(url), - "Rocket.Chat webhook URL must use HTTP or HTTPS" - ), + .url({ protocol: /^https?$/, message: "Please enter a valid URL" }), }); const pagerDutySchema = baseSchema.extend({ diff --git a/server/src/api/validation/notificationValidation.ts b/server/src/api/validation/notificationValidation.ts index fea35e89d..e883b9006 100644 --- a/server/src/api/validation/notificationValidation.ts +++ b/server/src/api/validation/notificationValidation.ts @@ -27,9 +27,10 @@ export const createNotificationBodyValidation = z.discriminatedUnion("type", [ z.object({ notificationName: z.string().min(1, "Notification name is required"), type: z.literal("rocket_chat"), - address: z - .url({ message: "Please enter a valid Rocket.Chat webhook URL" }) - .refine((url) => /^https?:\/\//i.test(url), { message: "Rocket.Chat webhook URL must use HTTP or HTTPS" }), + address: z.url({ + protocol: /^https?$/, + message: "Please enter a valid Rocket.Chat webhook URL", + }), }), // Slack notification z.object({