request->get['redirect'] ?? null; if ($originalRedirect) { // Store original redirect URL in session for use after Keycloak callback $this->session->set('keycloak_redirect', $originalRedirect); } try { // Create OpenID Connect client $oidc = new OpenIDConnectClient( $keycloakUrl, $keycloakClient, $keycloakSecret ); $oidc->setRedirectURL($redirectUrl); $oidc->addScope(['openid', 'profile', 'email']); // Restore error reporting before redirect error_reporting($oldErrorReporting); // Redirect user to Keycloak for authentication // This will send headers, so no output before this $oidc->authenticate(); } catch (\Exception $e) { // Restore error reporting error_reporting($oldErrorReporting); // If redirect fails, redirect to login page with error header('Location: /admin/index.php?module=user/login&error=' . urlencode('Keycloak authentication failed: ' . $e->getMessage())); exit; } } }