🚑 Fix customDomain regex validation
This commit is contained in:
@ -26,7 +26,7 @@ export const ImportTypebotFromFileButton = ({
|
||||
updatedAt: true,
|
||||
})
|
||||
.parse(typebot)
|
||||
onNewTypebot(typebot)
|
||||
onNewTypebot(typebot as Typebot)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
showToast({
|
||||
|
@ -4,6 +4,8 @@ import { TRPCError } from '@trpc/server'
|
||||
import { publicTypebotSchema } from '@typebot.io/schemas'
|
||||
import { z } from 'zod'
|
||||
import { isReadTypebotForbidden } from '../helpers/isReadTypebotForbidden'
|
||||
import { parseInvalidTypebot } from '../helpers/parseInvalidTypebot'
|
||||
import { PublicTypebot } from '@typebot.io/schemas'
|
||||
|
||||
export const getPublishedTypebot = authenticatedProcedure
|
||||
.meta({
|
||||
@ -48,7 +50,7 @@ export const getPublishedTypebot = authenticatedProcedure
|
||||
|
||||
try {
|
||||
const parsedTypebot = publicTypebotSchema.parse(
|
||||
existingTypebot.publishedTypebot
|
||||
parseInvalidTypebot(existingTypebot.publishedTypebot as PublicTypebot)
|
||||
)
|
||||
|
||||
return {
|
||||
|
@ -1,6 +1,8 @@
|
||||
import { Edge, Typebot, edgeSchema } from '@typebot.io/schemas'
|
||||
import { Edge, PublicTypebot, Typebot, edgeSchema } from '@typebot.io/schemas'
|
||||
|
||||
export const parseInvalidTypebot = (typebot: Typebot): Typebot => ({
|
||||
export const parseInvalidTypebot = (
|
||||
typebot: Typebot | PublicTypebot
|
||||
): Typebot | PublicTypebot => ({
|
||||
...typebot,
|
||||
version: typebot.version as null | '3' | '4' | '5',
|
||||
edges: parseInvalidEdges(typebot.edges),
|
||||
|
@ -41,6 +41,11 @@ const resultsTablePreferencesSchema = z.object({
|
||||
const isPathNameCompatible = (str: string) =>
|
||||
/^([a-z0-9]+-[a-z0-9]*)*$/.test(str) || /^[a-z0-9]*$/.test(str)
|
||||
|
||||
const isDomainNameWithPathNameCompatible = (str: string) =>
|
||||
/^(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(?:\/[\w-\/]*)?)$/.test(
|
||||
str
|
||||
)
|
||||
|
||||
export const typebotSchema = z.object({
|
||||
version: z.enum(['3', '4', '5']).nullable(),
|
||||
id: z.string(),
|
||||
@ -56,7 +61,10 @@ export const typebotSchema = z.object({
|
||||
icon: z.string().nullable(),
|
||||
folderId: z.string().nullable(),
|
||||
publicId: z.string().refine(isPathNameCompatible).nullable(),
|
||||
customDomain: z.string().refine(isPathNameCompatible).nullable(),
|
||||
customDomain: z
|
||||
.string()
|
||||
.refine(isDomainNameWithPathNameCompatible)
|
||||
.nullable(),
|
||||
workspaceId: z.string(),
|
||||
resultsTablePreferences: resultsTablePreferencesSchema.nullable(),
|
||||
isArchived: z.boolean(),
|
||||
|
Reference in New Issue
Block a user