45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
// middleware/auth.ts
|
|
|
|
import { useAccess } from "~/composables/useAccess";
|
|
export default defineNuxtRouteMiddleware((to) => {
|
|
|
|
// const perms = getPermissionsByPath(to.path)
|
|
const roleUser = 'admin';
|
|
const { getRole, getMergedPages,getPermisionPage } = useAccess(to.path , roleUser);
|
|
|
|
const mergedPages = getMergedPages
|
|
const permisionPage = getPermisionPage
|
|
//console.log("role", getRole);
|
|
//console.log("meta", path);
|
|
|
|
// Jika belum login, redirect ke halaman login
|
|
if (!roleUser) {
|
|
console.log("[ NOT LOGGED IN]", { path: to.meta });
|
|
return navigateTo('/auth/login') //
|
|
}
|
|
|
|
// Validasi permission pada halaman
|
|
const meta = to.meta;
|
|
const allowedRole = (meta.role || []) as string[]
|
|
const rolePass = allowedRole.length === 0 || allowedRole.includes(roleUser)
|
|
//const permissionPass = !meta.permission || meta.permission.every(p => perms.includes(p))
|
|
console.log('middleware auth jalan di:', allowedRole);
|
|
|
|
|
|
//if (!rolePass || !permisionPage) {
|
|
if (!rolePass || !mergedPages) {
|
|
console.log('[ ACCESS DENIED]', {
|
|
path: to.path,
|
|
roleUser,
|
|
mergedPages
|
|
})
|
|
return navigateTo('/403') // Halaman tidak punya akses
|
|
}
|
|
console.log('[ACCESS GRANTED]', {
|
|
path: to.path,
|
|
roleUser,
|
|
mergedPages,
|
|
permisionPage
|
|
})
|
|
});
|