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 + } +}