feat(SW-1773): add proper validation to form and query

This commit is contained in:
Christian Andolf
2025-02-27 16:28:58 +01:00
parent 21255f8557
commit c98ac88ac0
12 changed files with 74 additions and 26 deletions
+10
View File
@@ -40,6 +40,14 @@ export function notFound(cause?: unknown) {
})
}
export function unprocessableContent(cause?: unknown) {
return new TRPCError({
code: "UNPROCESSABLE_CONTENT",
message: "Unprocessable content",
cause,
})
}
export function internalServerError(cause?: unknown) {
return new TRPCError({
code: "INTERNAL_SERVER_ERROR",
@@ -78,6 +86,8 @@ export function serverErrorByStatus(status: number, cause?: unknown) {
return notFound(cause)
case 409:
return conflictError(cause)
case 422:
return unprocessableContent(cause)
case 500:
default:
return internalServerError(cause)
@@ -109,8 +109,12 @@ export const cancelBookingInput = z.object({
})
export const createRefIdInput = z.object({
confirmationNumber: z.string(),
lastName: z.string(),
bookingNumber: z
.string()
.trim()
.regex(/^\s*[0-9]+(-[0-9])?\s*$/)
.min(1),
lastName: z.string().trim().max(250).min(1),
})
// Query
@@ -236,8 +236,12 @@ export const bookingQueryRouter = router({
createRefId: serviceProcedure
.input(createRefIdInput)
.mutation(async function ({ input }) {
const { confirmationNumber, lastName } = input
const encryptedRefId = encryptValue(`${confirmationNumber},${lastName}`)
const { bookingNumber, lastName } = input
const encryptedRefId = encryptValue(`${bookingNumber},${lastName}`)
if (!encryptedRefId) {
throw serverErrorByStatus(422, "Was not able to encrypt ref id")
}
return {
refId: encryptedRefId,