// server/api/auth/logout.post.ts export default defineEventHandler(async (event) => { try { const body = await readBody(event); const { id_token_hint } = body; if (!id_token_hint) { return { success: false, error: "Missing id_token_hint" }; } const config = useRuntimeConfig(); const keycloakIssuer = config.public.keycloakIssuer; //const redirectUri = `${config.public.baseUrl}/auth/login` const redirectUri = `${config.public.authUrl}/auth/login`; // bentuk body sesuai standard OIDC logout const params = new URLSearchParams({ id_token_hint, post_logout_redirect_uri: redirectUri, }); console.log( "Making request to:", `${keycloakIssuer}/protocol/openid-connect/logout` ); // memanggil Keycloak logout endpoint // await $fetch(`${keycloakIssuer}/protocol/openid-connect/logout`, { // method: "POST", // body: params.toString(), // headers: { // "Content-Type": "application/x-www-form-urlencoded", // }, // // Tambahkan ini untuk detail response // onResponse({ response }) { // console.log("Status:", response.status); // console.log("Status Text:", response.statusText); // console.log("Headers:", response.headers); // }, // onResponseError({ response }) { // console.error("Error Status:", response.status); // console.error("Error:", response._data); // } // }); const logoutResponse = await fetch( `${keycloakIssuer}/protocol/openid-connect/logout`, { method: "POST", body: params.toString(), headers: { "Content-Type": "application/x-www-form-urlencoded", }, } ); console.log(" Server: Response status:", logoutResponse.status); if (logoutResponse.ok) { console.log(" Server: Keycloak logout successful"); } return { success: true, message: { params: `${keycloakIssuer}/protocol/openid-connect/logout?${params.toString()}`, keycloakIssuer: keycloakIssuer }, logoutUrl: redirectUri, }; } catch (err) { console.error("Logout API error:", err); return { success: false, error: "Failed to logout from Keycloak" }; } });