update Keycloak logout & fullLogout
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
// 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" };
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user