getBookingDto($request, BookingDto::MODE_CREATE); $isBookingFlow = null !== $bookingDto; // If authenticated and in booking flow, proceed to Step 1 if (null !== $this->getUser() && true === $isBookingFlow) { return $this->redirectToRoute('app_booking_create_step_1'); } // If authenticated but not in booking flow, redirect to dashboard if (null !== $this->getUser()) { return $this->redirectToRoute('app_account'); } $error = $authenticationUtils->getLastAuthenticationError(); $lastUsername = $authenticationUtils->getLastUsername(); // flag this request in the session as external OAuth2 request if // applicable to immediately logout the current user after successful // authentication (see App\EventListener\AuthorizationCodeListener). $session = $request->getSession(); $targetPath = $session->get('_security.main.target_path'); $isOauth2 = null !== $targetPath && str_contains($targetPath, '/authorize'); $session->set('_oauth2', $isOauth2); // For booking flow, set target path to Step 1 (after successful auth, redirect there) if (true === $isBookingFlow) { $session->set('_security.main.target_path', $this->generateUrl('app_booking_create_step_1')); } // Render booking login template if in booking flow, otherwise standard login $template = true === $isBookingFlow ? 'booking/create/authenticate.html.twig' : 'security/login.html.twig'; // Fetch CMS data for booking flow (uses cache warmed in IndexController) $cmsData = null; if (true === $isBookingFlow) { $cmsData = $summaryDataService->getCmsDataForProduct( $bookingDto->travel->productCode, $bookingDto->travel->hotel?->code ); } return $this->render($template, [ 'last_username' => $lastUsername, 'error' => $error, 'travel_title' => $bookingDto?->travel->label, 'travel_date_from' => $bookingDto?->travel->dateFrom, 'travel_date_to' => $bookingDto?->travel->dateTo, 'cmsData' => $cmsData, 'oauth2' => $isOauth2, ]); } #[Route('/logout', name: 'app_logout')] #[IsGranted('ROLE_USER')] public function logout(): void { } }