Files
formbricks/apps/web/lib/utils/url.ts
2025-04-21 15:57:54 +02:00

41 lines
1.3 KiB
TypeScript

import { TActionClassPageUrlRule } from "@formbricks/types/action-classes";
export const testURLmatch = (
testUrl: string,
pageUrlValue: string,
pageUrlRule: TActionClassPageUrlRule
): string => {
switch (pageUrlRule) {
case "exactMatch":
return testUrl === pageUrlValue ? "yes" : "no";
case "contains":
return testUrl.includes(pageUrlValue) ? "yes" : "no";
case "startsWith":
return testUrl.startsWith(pageUrlValue) ? "yes" : "no";
case "endsWith":
return testUrl.endsWith(pageUrlValue) ? "yes" : "no";
case "notMatch":
return testUrl !== pageUrlValue ? "yes" : "no";
case "notContains":
return !testUrl.includes(pageUrlValue) ? "yes" : "no";
default:
throw new Error("Invalid match type");
}
};
// Helper function to validate callback URLs
export const isValidCallbackUrl = (url: string, WEBAPP_URL: string): boolean => {
try {
const parsedUrl = new URL(url);
const allowedSchemes = ["https:", "http:"];
// Extract the domain from WEBAPP_URL
const parsedWebAppUrl = new URL(WEBAPP_URL);
const allowedDomains = [parsedWebAppUrl.hostname];
return allowedSchemes.includes(parsedUrl.protocol) && allowedDomains.includes(parsedUrl.hostname);
} catch (err) {
return false;
}
};