diff --git a/server/routers/partners/sas/otp/verify/verifyOtp.ts b/server/routers/partners/sas/otp/verify/verifyOtp.ts index 3c868b658..f8a22ead6 100644 --- a/server/routers/partners/sas/otp/verify/verifyOtp.ts +++ b/server/routers/partners/sas/otp/verify/verifyOtp.ts @@ -1,5 +1,4 @@ import { TRPCError } from "@trpc/server" -import { cookies } from "next/headers" import { z } from "zod" import { env } from "@/env/server" @@ -27,7 +26,7 @@ const outputSchema = z.object({ "NULL", "NOTSENT", ]), - referenceId: z.string().uuid(), + referenceId: z.string().uuid().optional(), databaseUUID: z.string().uuid().optional(), }) @@ -47,19 +46,27 @@ export const verifyOtp = protectedProcedure verifyResponse.status, verifyResponse.statusText ) - if (!verifyResponse.ok) { - const errorBody = await verifyResponse.json() - console.error("[SAS] verifyOTP error", errorBody) - throw createError(errorBody) + + if (verifyResponse.status > 499) { + console.error("[SAS] verifyOTP error", await verifyResponse.text()) + throw new TRPCError({ + code: "SERVICE_UNAVAILABLE", + message: "Error from downstream SAS service", + }) + } + + const data = await verifyResponse.json() + console.log("[SAS] verifyOTP data", data) + const result = outputSchema.safeParse(data) + if (!result.success) { + console.error("[SAS] verifyOTP error", result.error) + throw createError(data) } console.log("[SAS] verifyOTP success") - const verifyData = await verifyResponse.json() - console.log("[SAS] verifyOTP data", verifyData) - const response = outputSchema.parse(verifyData) - console.log("[SAS] verifyOTP responding", response) + console.log("[SAS] verifyOTP responding", result.data) - return response + return result.data }) async function fetchVerifyOtp(input: z.infer) {