import client from "~/server/utils/auth"; import cors from 'cors'; export default defineEventHandler(async (event) => { const runtimeconfig = useRuntimeConfig(); const redirectUri = `${runtimeconfig.public.keycloakRedirectURI}/callback`; // Ganti dengan URL yang sesuai jika perlu const responseType = 'code'; const scope = 'openid'; // Apply CORS middleware await new Promise((resolve, reject) => { cors({ origin: redirectUri, methods: ['POST'], })(event.node.req, event.node.res, resolve); }); // await new Promise((resolve, reject) => { // cors({ // origin: runtimeConfig.public.keycloakRedirectURI, // methods: ['GET', 'POST'], // })(event.node.req, event.node.res, (err: any) => { // if (err) reject(err); // else resolve(true); // }); // }); const authClient = await client(); const authorizationUrl = authClient.authorizationUrl({ scope: 'openid profile email', // scope: 'login-required', }); // console.log(authorizationUrl) // const baseURL = new URL(authorizationUrl) // // console.log(baseURL.searchParams) // const urlParam = baseURL.searchParams // console.log(urlParam.get('code')) // if (event.node.req.url?.startsWith('/callback')) { // try { // const params = authClient.callbackParams(event.node.req); // const tokenSet = await authClient.callback(redirectUri, params, { // response_type: responseType, // }); // // const userInfo = await authClient.userinfo(tokenSet); // console.log(userInfo); // Simpan user info di session // await setCookie(event).update({ // user: { // id: userInfo.sub, // name: userInfo.name || userInfo.preferred_username, // email: userInfo.email, // roles: userInfo.roles || [], // accessToken: tokenSet.access_token, // refreshToken: tokenSet.refresh_token, // } // }); // Redirect setelah login sukses // return sendRedirect(event, runtimeConfig.public.afterLoginRedirect || '/'); // // } catch (error) { // console.error('Keycloak authentication error:', error); // throw createError({ // statusCode: 401, // statusMessage: 'Authentication failed', // }); // } // } return { callbackURL: authorizationUrl } });