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