tambah menu sideBarMenu , middleware definepagemeta

This commit is contained in:
2025-07-10 12:06:56 +07:00
parent 1b05076317
commit c37759cc8f
16 changed files with 244 additions and 149 deletions

View File

@@ -0,0 +1,65 @@
import type { SidebarItem } from '~/types/menuAkses/sidebar'
import type { PageAccess } from '~/types/menuAkses/access'
interface SidebarItemWithPermissions extends SidebarItem {
permissions: string[];
}
export function mergeSidebar(menuItems: SidebarItem[], allowedPages: PageAccess[]): SidebarItem[] {
const result: SidebarItem[] = []
for (const item of menuItems) {
// Jika punya anak (children)
//console.log('item', item);
//console.log('allowedPages', allowedPages);
if (Array.isArray(item.children)) {
const filteredChildren = mergeSidebar(item.children, allowedPages)
// console.log('ada array item', item);
//console.log('filteredChildren', filteredChildren);
if (filteredChildren.length > 0) {
result.push({
...item,
children: filteredChildren
})
}
//console.log('result', result);
}
// Jika punya path, cocokkan dengan json dummy / backend
else if (item.to) {
const matchPage = allowedPages.find(page => page.title === item.title && page.path === item.to) //cocokkan title dan path link path halaman
//console.log('match', matchPage,matchPage?.permissions);
if (matchPage && matchPage.permissions?.includes('view')) {
result.push({
...item,
permissions: matchPage?.permissions,
} as SidebarItemWithPermissions)
}
}
}
return result
}
export function mergeSidebarIcon(staticIcon: any[], IconAccess: any[]) {
const result : any[] = []
for (const item of staticIcon) {
const matchIcon = IconAccess.find(icon => icon.id === item.id)
//console.log('matchIcon', matchIcon);
if (matchIcon) {
result.push({
...item,
})
}
}
return result
}