perbaikan keycloak dan hak akses pada sidebarItem, add axios, pinia, zod
This commit is contained in:
73
server/api/auth/login.js
Normal file
73
server/api/auth/login.js
Normal file
@@ -0,0 +1,73 @@
|
||||
import client from "~/server/utils/auth";
|
||||
import { sendRedirect } from 'h3';
|
||||
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',
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
console.log(authorizationUrl)
|
||||
|
||||
return { callbackURL: authorizationUrl }
|
||||
// return { callbackURL: authorizationUrl+`&response_type=${responseType}&scope=${scope}` }
|
||||
});
|
||||
19
server/api/sidebarItem.ts
Normal file
19
server/api/sidebarItem.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import axios from "axios";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const read_body = await readBody(event)
|
||||
console.log(`ini ${read_body}`)
|
||||
try {
|
||||
const response = await axios.get(`http://10.10.150.131:8080/api/login/${read_body.key}`)
|
||||
// console.log(response.data.data)
|
||||
|
||||
return response.data.data
|
||||
} catch (error) {
|
||||
console.log(`Messages Err: ${error.response.data.message} || nullable`)
|
||||
throw createError({
|
||||
statusCode: error.response?.status || 500,
|
||||
statusMessage: error.message || 'Internal Server Error',
|
||||
});
|
||||
}
|
||||
|
||||
})
|
||||
Reference in New Issue
Block a user