From 8ed521de3f1b578272aa67d44b2d4bae5ba38359 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matilda=20Landstr=C3=B6m?= Date: Fri, 21 Feb 2025 08:20:30 +0000 Subject: [PATCH] Merged in fix/SW-1693-subpage-check (pull request #1373) Fix(SW-1693): Don't render hotel subpages if not supposed to * fix(SW-1693): don't render hotel subpage if not supposed to Approved-by: Erik Tiekstra Approved-by: Fredrik Thorsson --- components/ContentType/HotelSubpage/index.tsx | 6 +++- components/ContentType/HotelSubpage/utils.ts | 34 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/components/ContentType/HotelSubpage/index.tsx b/components/ContentType/HotelSubpage/index.tsx index 82f0dad18..d2eba9dd6 100644 --- a/components/ContentType/HotelSubpage/index.tsx +++ b/components/ContentType/HotelSubpage/index.tsx @@ -19,7 +19,7 @@ import MeetingsAdditionalContent from "./AdditionalContent/Meetings" import HotelSubpageAdditionalContent from "./AdditionalContent" import HtmlContent from "./HtmlContent" import HotelSubpageSidebar from "./Sidebar" -import { getSubpageData } from "./utils" +import { getSubpageData, verifySubpageShouldExist } from "./utils" import styles from "./hotelSubpage.module.css" @@ -40,6 +40,10 @@ export default async function HotelSubpage({ notFound() } + if (!verifySubpageShouldExist(hotelData, subpage)) { + notFound() + } + const pageData = getSubpageData(intl, subpage, hotelData) if (!pageData) { notFound() diff --git a/components/ContentType/HotelSubpage/utils.ts b/components/ContentType/HotelSubpage/utils.ts index 3521b2236..50ee5b690 100644 --- a/components/ContentType/HotelSubpage/utils.ts +++ b/components/ContentType/HotelSubpage/utils.ts @@ -91,3 +91,37 @@ export function getSubpageData( return null } } + +export function verifySubpageShouldExist( + hotelData: HotelData, + subpage: string +): boolean { + const isRestaurant = hotelData.restaurants.find( + (restaurant) => restaurant.nameInUrl === subpage + ) + if (isRestaurant) { + return true + } + + const additionalData = hotelData.additionalData + switch (subpage) { + case additionalData.hotelParking.nameInUrl: + if (additionalData.displayWebPage.parking) { + return true + } + case additionalData.healthAndFitness.nameInUrl: + if (additionalData.displayWebPage.healthGym) { + return true + } + case additionalData.hotelSpecialNeeds.nameInUrl: + if (additionalData.displayWebPage.specialNeeds) { + return true + } + case additionalData.meetingRooms.nameInUrl: + if (additionalData.displayWebPage.meetingRoom) { + return true + } + default: + return false + } +}