tambah menu sideBarMenu , middleware definepagemeta
This commit is contained in:
65
utils/sidebarMenu/mergeSidebar.ts
Normal file
65
utils/sidebarMenu/mergeSidebar.ts
Normal 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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user