feat: make booking init flow entry-point post only

This commit is contained in:
Björn Fromme
2026-08-29 09:37:23 +02:00
parent 80d734e7d6
commit bbc1b6c68a
2 changed files with 8 additions and 1 deletions
@@ -48,6 +48,7 @@ class IndexController extends AbstractController
#[Route( #[Route(
path: '/bookings/create', path: '/bookings/create',
name: 'app_booking_create', name: 'app_booking_create',
methods: ['GET'],
)] )]
public function index(#[MapQueryString] ?BookingQueryParams $params): Response public function index(#[MapQueryString] ?BookingQueryParams $params): Response
{ {
@@ -70,10 +71,16 @@ class IndexController extends AbstractController
* Optionally accepts an agency code parameter. If provided and valid, the * Optionally accepts an agency code parameter. If provided and valid, the
* corresponding agency ID is stored in the booking. If not provided or invalid, * corresponding agency ID is stored in the booking. If not provided or invalid,
* defaults to agency code '0001'. * defaults to agency code '0001'.
*
* POST-only on purpose: this endpoint is neither safe nor idempotent. It resets the
* caller's booking session and forces an uncached BusPro availability call plus a CMS
* roundtrip, so it must not be reachable by anything that speculatively fetches URLs
* (prefetchers, link unfurlers, mail scanners, crawlers). The loading page posts to it.
*/ */
#[Route( #[Route(
path: '/bookings/create/init', path: '/bookings/create/init',
name: 'app_booking_create_init', name: 'app_booking_create_init',
methods: ['POST'],
)] )]
public function init(Request $request, #[MapQueryString] ?BookingQueryParams $params): Response public function init(Request $request, #[MapQueryString] ?BookingQueryParams $params): Response
{ {
+1 -1
View File
@@ -2,7 +2,7 @@
{% block content %} {% block content %}
<div class="flex-1 flex items-center justify-center" <div class="flex-1 flex items-center justify-center"
hx-get="{{ path('app_booking_create_init', { hx-post="{{ path('app_booking_create_init', {
date_id: params.dateId, date_id: params.dateId,
hotel_id: params.hotelId, hotel_id: params.hotelId,
agency: params.agency, agency: params.agency,