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
This commit is contained in:
Hrishikesh Vaipurkar
2025-10-14 09:35:53 +00:00
parent 01e9542ded
commit 73af1eed9b
4 changed files with 43 additions and 26 deletions

View File

@@ -7,14 +7,16 @@ import { safeProtectedServiceProcedure } from "../../../../procedures"
import { encrypt } from "../../../../utils/encryption" import { encrypt } from "../../../../utils/encryption"
import { isValidSession } from "../../../../utils/session" import { isValidSession } from "../../../../utils/session"
import { getMembershipNumber } from "../../../user/utils" import { getMembershipNumber } from "../../../user/utils"
import { isPartnerLoggedInUser } from "../../utils"
import { createBookingInput, createBookingSchema } from "./schema" import { createBookingInput, createBookingSchema } from "./schema"
export const create = safeProtectedServiceProcedure export const create = safeProtectedServiceProcedure
.input(createBookingInput) .input(createBookingInput)
.use(async ({ ctx, next }) => { .use(async ({ ctx, next }) => {
const token = isValidSession(ctx.session) const token =
? ctx.session.token.access_token isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session)
: ctx.serviceToken ? ctx.session.token.access_token
: ctx.serviceToken
return next({ return next({
ctx: { ctx: {

View File

@@ -14,7 +14,7 @@ import {
updateBookingInput, updateBookingInput,
} from "../input" } from "../input"
import { bookingConfirmationSchema } from "../output" import { bookingConfirmationSchema } from "../output"
import { cancelBooking } from "../utils" import { cancelBooking, isPartnerLoggedInUser } from "../utils"
import { createBookingSchema } from "./create/schema" import { createBookingSchema } from "./create/schema"
import { create } from "./create" import { create } from "./create"
@@ -26,9 +26,10 @@ export const bookingMutationRouter = router({
priceChange: safeProtectedServiceProcedure priceChange: safeProtectedServiceProcedure
.concat(refIdPlugin.toConfirmationNumber) .concat(refIdPlugin.toConfirmationNumber)
.use(async ({ ctx, next }) => { .use(async ({ ctx, next }) => {
const token = isValidSession(ctx.session) const token =
? ctx.session.token.access_token isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session)
: ctx.serviceToken ? ctx.session.token.access_token
: ctx.serviceToken
return next({ return next({
ctx: { ctx: {
@@ -75,9 +76,10 @@ export const bookingMutationRouter = router({
.input(cancelBookingsInput) .input(cancelBookingsInput)
.concat(refIdPlugin.toConfirmationNumbers) .concat(refIdPlugin.toConfirmationNumbers)
.use(async ({ ctx, next }) => { .use(async ({ ctx, next }) => {
const token = isValidSession(ctx.session) const token =
? ctx.session.token.access_token isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session)
: ctx.serviceToken ? ctx.session.token.access_token
: ctx.serviceToken
return next({ return next({
ctx: { ctx: {
@@ -118,9 +120,10 @@ export const bookingMutationRouter = router({
.input(addPackageInput) .input(addPackageInput)
.concat(refIdPlugin.toConfirmationNumber) .concat(refIdPlugin.toConfirmationNumber)
.use(async ({ ctx, next }) => { .use(async ({ ctx, next }) => {
const token = isValidSession(ctx.session) const token =
? ctx.session.token.access_token isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session)
: ctx.serviceToken ? ctx.session.token.access_token
: ctx.serviceToken
return next({ return next({
ctx: { ctx: {
@@ -173,9 +176,10 @@ export const bookingMutationRouter = router({
.input(guaranteeBookingInput) .input(guaranteeBookingInput)
.concat(refIdPlugin.toConfirmationNumber) .concat(refIdPlugin.toConfirmationNumber)
.use(async ({ ctx, next }) => { .use(async ({ ctx, next }) => {
const token = isValidSession(ctx.session) const token =
? ctx.session.token.access_token isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session)
: ctx.serviceToken ? ctx.session.token.access_token
: ctx.serviceToken
return next({ return next({
ctx: { ctx: {
@@ -228,9 +232,10 @@ export const bookingMutationRouter = router({
.input(updateBookingInput) .input(updateBookingInput)
.concat(refIdPlugin.toConfirmationNumber) .concat(refIdPlugin.toConfirmationNumber)
.use(async ({ ctx, next }) => { .use(async ({ ctx, next }) => {
const token = isValidSession(ctx.session) const token =
? ctx.session.token.access_token isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session)
: ctx.serviceToken ? ctx.session.token.access_token
: ctx.serviceToken
return next({ return next({
ctx: { ctx: {
@@ -282,9 +287,10 @@ export const bookingMutationRouter = router({
.input(removePackageInput) .input(removePackageInput)
.concat(refIdPlugin.toConfirmationNumber) .concat(refIdPlugin.toConfirmationNumber)
.use(async ({ ctx, next }) => { .use(async ({ ctx, next }) => {
const token = isValidSession(ctx.session) const token =
? ctx.session.token.access_token isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session)
: ctx.serviceToken ? ctx.session.token.access_token
: ctx.serviceToken
return next({ return next({
ctx: { ctx: {

View File

@@ -21,7 +21,7 @@ import {
getBookingStatusInput, getBookingStatusInput,
getLinkedReservationsInput, getLinkedReservationsInput,
} from "./input" } from "./input"
import { findBooking, getBooking } from "./utils" import { findBooking, getBooking, isPartnerLoggedInUser } from "./utils"
const refIdPlugin = createRefIdPlugin() const refIdPlugin = createRefIdPlugin()
@@ -31,9 +31,10 @@ export const bookingQueryRouter = router({
.concat(refIdPlugin.toConfirmationNumber) .concat(refIdPlugin.toConfirmationNumber)
.use(async ({ ctx, input, next }) => { .use(async ({ ctx, input, next }) => {
const lang = input.lang ?? ctx.lang const lang = input.lang ?? ctx.lang
const token = isValidSession(ctx.session) const token =
? ctx.session.token.access_token isValidSession(ctx.session) && !isPartnerLoggedInUser(ctx.session)
: ctx.serviceToken ? ctx.session.token.access_token
: ctx.serviceToken
return next({ return next({
ctx: { ctx: {

View File

@@ -1,3 +1,4 @@
import { LoginTypeEnum } from "@scandic-hotels/common/constants/loginType"
import { createCounter } from "@scandic-hotels/common/telemetry" import { createCounter } from "@scandic-hotels/common/telemetry"
import * as api from "../../api" import * as api from "../../api"
@@ -7,6 +8,7 @@ import { createBookingSchema } from "./mutation/create/schema"
import { bookingConfirmationSchema } from "./output" import { bookingConfirmationSchema } from "./output"
import type { Lang } from "@scandic-hotels/common/constants/language" import type { Lang } from "@scandic-hotels/common/constants/language"
import type { Session } from "next-auth"
export async function getBooking( export async function getBooking(
confirmationNumber: string, confirmationNumber: string,
@@ -157,3 +159,9 @@ export async function cancelBooking(
return verifiedData.data 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
}