mirror of
https://github.com/formbricks/formbricks.git
synced 2026-04-23 21:59:28 -05:00
bebe29815d
Co-authored-by: Piyush Gupta <56182734+gupta-piyush19@users.noreply.github.com> Co-authored-by: Piyush Gupta <piyushguptaa2z123@gmail.com> Co-authored-by: Dhruwang <dhruwangjariwala18@gmail.com> Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com>
55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
/**
|
|
* Routes that should be accessible on the public domain (PUBLIC_URL)
|
|
* Uses whitelist approach - only these routes are allowed on public domain
|
|
*/
|
|
const PUBLIC_ROUTES = {
|
|
// Survey routes
|
|
SURVEY_ROUTES: [
|
|
/^\/s\/[^/]+/, // /s/[surveyId] - survey pages
|
|
/^\/c\/[^/]+/, // /c/[jwt] - contact survey pages
|
|
],
|
|
|
|
// API routes accessible from public domain
|
|
API_ROUTES: [
|
|
/^\/api\/v[12]\/client\//, // /api/v1/client/** and /api/v2/client/**
|
|
],
|
|
|
|
// Share routes
|
|
SHARE_ROUTES: [
|
|
/^\/share\//, // /share/** - shared survey results
|
|
],
|
|
} as const;
|
|
|
|
const COMMON_ROUTES = {
|
|
HEALTH_ROUTES: [/^\/health$/], // /health endpoint
|
|
PUBLIC_STORAGE_ROUTES: [
|
|
/^\/storage\/[^/]+\/public\//, // /storage/[environmentId]/public/** - public storage
|
|
],
|
|
} as const;
|
|
|
|
/**
|
|
* Get public only route patterns as a flat array
|
|
*/
|
|
export const getPublicDomainRoutePatterns = (): RegExp[] => {
|
|
return Object.values(PUBLIC_ROUTES).flat();
|
|
};
|
|
|
|
/**
|
|
* Get all public route patterns as a flat array
|
|
*/
|
|
export const getAllPubliclyAccessibleRoutePatterns = (): RegExp[] => {
|
|
const routes = {
|
|
...PUBLIC_ROUTES,
|
|
...COMMON_ROUTES,
|
|
};
|
|
|
|
return Object.values(routes).flat();
|
|
};
|
|
|
|
/**
|
|
* Check if a URL matches any of the given route patterns
|
|
*/
|
|
export const matchesAnyPattern = (url: string, patterns: RegExp[]): boolean => {
|
|
return patterns.some((pattern) => pattern.test(url));
|
|
};
|