Files
template-nuxtsim/middleware/auth-menu.ts

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