diff --git a/src/Controller/Booking/Create/IndexController.php b/src/Controller/Booking/Create/IndexController.php
index 0396ab9..f2d3048 100644
--- a/src/Controller/Booking/Create/IndexController.php
+++ b/src/Controller/Booking/Create/IndexController.php
@@ -5,8 +5,6 @@ declare(strict_types=1);
namespace App\Controller\Booking\Create;
use App\BusProNet\XmlLoader\AgencyLoader;
-use App\Controller\Account\PersonalDataController;
-use App\Entity\User;
use App\Exception\HotelNotFoundException;
use App\Exception\HotelNotInTravelException;
use App\Exception\NoRoomsAvailableException;
@@ -44,7 +42,6 @@ class IndexController extends AbstractController
*
* Renders a loading page that triggers the actual initialization via HTMX.
* This provides immediate visual feedback while BusProNet API calls are made.
- * Redirects to profile completion if logged-in user has incomplete profile data.
*/
#[Route(
path: '/bookings/create',
@@ -56,14 +53,6 @@ class IndexController extends AbstractController
throw $this->createNotFoundException('Invalid booking parameters provided');
}
- $user = $this->getUser();
-
- if ($user instanceof User && false === $user->isProfileComplete()) {
- $request->getSession()->set(PersonalDataController::SESSION_REDIRECT_KEY, $request->getUri());
-
- return $this->redirectToRoute('app_personal_data');
- }
-
return $this->render('booking/create/index.html.twig', [
'params' => $params,
]);
diff --git a/src/EventListener/ProfileCompletionRedirectListener.php b/src/EventListener/ProfileCompletionRedirectListener.php
new file mode 100644
index 0000000..87fe7fb
--- /dev/null
+++ b/src/EventListener/ProfileCompletionRedirectListener.php
@@ -0,0 +1,68 @@
+ ['onLoginSuccess', 0],
+ ];
+ }
+
+ public function onLoginSuccess(LoginSuccessEvent $event): void
+ {
+ $user = $event->getUser();
+
+ if (false === $user instanceof User || true === $user->isProfileComplete()) {
+ return;
+ }
+
+ $request = $event->getRequest();
+ $session = $request->getSession();
+
+ // Get the intended target path (set by SecurityController or authenticator)
+ $targetPath = $session->get('_security.main.target_path');
+
+ // Store target path for redirect after profile completion
+ if (null !== $targetPath) {
+ $session->set(PersonalDataController::SESSION_REDIRECT_KEY, $targetPath);
+ }
+
+ // Generate personal data URL
+ $personalDataUrl = $this->urlGenerator->generate('app_personal_data');
+
+ // Use HTMX-aware redirect if this is an HTMX request
+ if (true === $request->headers->has('HX-Request')) {
+ $event->setResponse(new HxRedirectResponse($personalDataUrl));
+
+ return;
+ }
+
+ $event->setResponse(new RedirectResponse($personalDataUrl));
+ }
+}
diff --git a/templates/booking/create/error.html.twig b/templates/booking/create/error.html.twig
index 540cf6a..f7628e0 100644
--- a/templates/booking/create/error.html.twig
+++ b/templates/booking/create/error.html.twig
@@ -13,7 +13,7 @@
} %}
{# hx-boost disabled for cross-origin #}
-
+
Zurück