71 lines
2.4 KiB
JavaScript
71 lines
2.4 KiB
JavaScript
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 }
|
|
});
|