From 73af1eed9bce35529fb92733d4ddb6189ca57c32 Mon Sep 17 00:00:00 2001 From: Hrishikesh Vaipurkar Date: Tue, 14 Oct 2025 09:35:53 +0000 Subject: [PATCH] Merged in fix/SW-3536-wl-cannot-initialize-payment- (pull request #2953) fix SW-3536 Fixed create booking call for sas logged in users in the partner site Approved-by: Anton Gunnarsson --- .../routers/booking/mutation/create/index.ts | 8 ++-- .../lib/routers/booking/mutation/index.ts | 44 +++++++++++-------- packages/trpc/lib/routers/booking/query.ts | 9 ++-- packages/trpc/lib/routers/booking/utils.ts | 8 ++++ 4 files changed, 43 insertions(+), 26 deletions(-) diff --git a/packages/trpc/lib/routers/booking/mutation/create/index.ts b/packages/trpc/lib/routers/booking/mutation/create/index.ts index a94562bfd..ec7234d89 100644 --- a/packages/trpc/lib/routers/booking/mutation/create/index.ts +++ b/packages/trpc/lib/routers/booking/mutation/create/index.ts @@ -7,14 +7,16 @@ import { safeProtectedServiceProcedure } from "../../../../procedures" import { encrypt } from "../../../../utils/encryption" import { isValidSession } from "../../../../utils/session" import { getMembershipNumber } from "../../../user/utils" +import { isPartnerLoggedInUser } from "../../utils" import { createBookingInput, createBookingSchema } from "./schema" export const create = safeProtectedServiceProcedure .input(createBookingInput) .use(async ({ ctx, next }) => { - const token = isValidSession(ctx.session) - ? ctx.session.token.access_token - : ctx.serviceToken + const token = + isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session) + ? ctx.session.token.access_token + : ctx.serviceToken return next({ ctx: { diff --git a/packages/trpc/lib/routers/booking/mutation/index.ts b/packages/trpc/lib/routers/booking/mutation/index.ts index f9ecd4563..78b308938 100644 --- a/packages/trpc/lib/routers/booking/mutation/index.ts +++ b/packages/trpc/lib/routers/booking/mutation/index.ts @@ -14,7 +14,7 @@ import { updateBookingInput, } from "../input" import { bookingConfirmationSchema } from "../output" -import { cancelBooking } from "../utils" +import { cancelBooking, isPartnerLoggedInUser } from "../utils" import { createBookingSchema } from "./create/schema" import { create } from "./create" @@ -26,9 +26,10 @@ export const bookingMutationRouter = router({ priceChange: safeProtectedServiceProcedure .concat(refIdPlugin.toConfirmationNumber) .use(async ({ ctx, next }) => { - const token = isValidSession(ctx.session) - ? ctx.session.token.access_token - : ctx.serviceToken + const token = + isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session) + ? ctx.session.token.access_token + : ctx.serviceToken return next({ ctx: { @@ -75,9 +76,10 @@ export const bookingMutationRouter = router({ .input(cancelBookingsInput) .concat(refIdPlugin.toConfirmationNumbers) .use(async ({ ctx, next }) => { - const token = isValidSession(ctx.session) - ? ctx.session.token.access_token - : ctx.serviceToken + const token = + isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session) + ? ctx.session.token.access_token + : ctx.serviceToken return next({ ctx: { @@ -118,9 +120,10 @@ export const bookingMutationRouter = router({ .input(addPackageInput) .concat(refIdPlugin.toConfirmationNumber) .use(async ({ ctx, next }) => { - const token = isValidSession(ctx.session) - ? ctx.session.token.access_token - : ctx.serviceToken + const token = + isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session) + ? ctx.session.token.access_token + : ctx.serviceToken return next({ ctx: { @@ -173,9 +176,10 @@ export const bookingMutationRouter = router({ .input(guaranteeBookingInput) .concat(refIdPlugin.toConfirmationNumber) .use(async ({ ctx, next }) => { - const token = isValidSession(ctx.session) - ? ctx.session.token.access_token - : ctx.serviceToken + const token = + isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session) + ? ctx.session.token.access_token + : ctx.serviceToken return next({ ctx: { @@ -228,9 +232,10 @@ export const bookingMutationRouter = router({ .input(updateBookingInput) .concat(refIdPlugin.toConfirmationNumber) .use(async ({ ctx, next }) => { - const token = isValidSession(ctx.session) - ? ctx.session.token.access_token - : ctx.serviceToken + const token = + isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session) + ? ctx.session.token.access_token + : ctx.serviceToken return next({ ctx: { @@ -282,9 +287,10 @@ export const bookingMutationRouter = router({ .input(removePackageInput) .concat(refIdPlugin.toConfirmationNumber) .use(async ({ ctx, next }) => { - const token = isValidSession(ctx.session) - ? ctx.session.token.access_token - : ctx.serviceToken + const token = + isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session) + ? ctx.session.token.access_token + : ctx.serviceToken return next({ ctx: { diff --git a/packages/trpc/lib/routers/booking/query.ts b/packages/trpc/lib/routers/booking/query.ts index 4ca1d17a7..2e3f77a01 100644 --- a/packages/trpc/lib/routers/booking/query.ts +++ b/packages/trpc/lib/routers/booking/query.ts @@ -21,7 +21,7 @@ import { getBookingStatusInput, getLinkedReservationsInput, } from "./input" -import { findBooking, getBooking } from "./utils" +import { findBooking, getBooking, isPartnerLoggedInUser } from "./utils" const refIdPlugin = createRefIdPlugin() @@ -31,9 +31,10 @@ export const bookingQueryRouter = router({ .concat(refIdPlugin.toConfirmationNumber) .use(async ({ ctx, input, next }) => { const lang = input.lang ?? ctx.lang - const token = isValidSession(ctx.session) - ? ctx.session.token.access_token - : ctx.serviceToken + const token = + isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session) + ? ctx.session.token.access_token + : ctx.serviceToken return next({ ctx: { diff --git a/packages/trpc/lib/routers/booking/utils.ts b/packages/trpc/lib/routers/booking/utils.ts index 3b159309c..f48cb8063 100644 --- a/packages/trpc/lib/routers/booking/utils.ts +++ b/packages/trpc/lib/routers/booking/utils.ts @@ -1,3 +1,4 @@ +import { LoginTypeEnum } from "@scandic-hotels/common/constants/loginType" import { createCounter } from "@scandic-hotels/common/telemetry" import * as api from "../../api" @@ -7,6 +8,7 @@ import { createBookingSchema } from "./mutation/create/schema" import { bookingConfirmationSchema } from "./output" import type { Lang } from "@scandic-hotels/common/constants/language" +import type { Session } from "next-auth" export async function getBooking( confirmationNumber: string, @@ -157,3 +159,9 @@ export async function cancelBooking( return verifiedData.data } + +// ToDo - Update the function to return true for Scandic site and +// in case of Partner sites fetch the Scandic Curity token for linked user and service token for unlinked user +export function isPartnerLoggedInUser(session: Session) { + return session.token.loginType === LoginTypeEnum.sas +}