Files
cobaKeuangan/server/api/auth/login.js

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 }
});