feat(SW-2605): confirmation page only valid for 1 minute for the session

This commit is contained in:
Michael Zetterberg
2025-05-06 12:04:00 +02:00
parent e0fe5ff0d5
commit c6a0ce86df
9 changed files with 73 additions and 21 deletions

View File

@@ -19,15 +19,22 @@ const validBookingStatuses = [
interface HandleStatusPollingProps {
refId: string
sig: string
successRedirectUrl: string
}
export default function HandleSuccessCallback({
refId,
sig,
successRedirectUrl,
}: HandleStatusPollingProps) {
const router = useRouter()
useEffect(() => {
// Cookie is used by Booking Confirmation page to validate that the user came from payment callback
document.cookie = `bcsig=${sig}; Path=/; Max-Age=60; Secure; SameSite=Strict`
}, [sig])
const {
data: bookingStatus,
error,
@@ -41,13 +48,13 @@ export default function HandleSuccessCallback({
})
useEffect(() => {
if (!bookingStatus?.reservationStatus) {
if (!bookingStatus?.booking.reservationStatus) {
return
}
if (
validBookingStatuses.includes(
bookingStatus.reservationStatus as BookingStatusEnum
bookingStatus.booking.reservationStatus as BookingStatusEnum
)
) {
const glaSessionData = readGlaFromSessionStorage()
@@ -63,7 +70,7 @@ export default function HandleSuccessCallback({
clearGlaSessionStorage()
}
// a successful booking can still have membership errors
const membershipFailedError = bookingStatus.errors.find(
const membershipFailedError = bookingStatus.booking.errors.find(
(e) => e.errorCode === MEMBERSHIP_FAILED_ERROR
)
const errorParam = membershipFailedError