import { useHakAksesStore } from "@/stores/sidebarMenuAkses/useMenuAksesStore"; import { mergeSidebar, mergeSidebarIcon, } from "~/utils/sidebarMenu/mergeSidebar"; import sidebarRole from "@/stores/rolePages"; // data dummy import sidebarItems from "~/components/layout/full/vertical-sidebar/sidebarItem"; //sidebar static dari template import MiniSideIcons from "~/components/layout/full/vertical-sidebar/MinIconItems"; export function useSidebarAccess(dataUser: string) { const akses = useHakAksesStore(); const sidebarMenu = shallowRef(sidebarItems); const sidebarMiniSideIcons = shallowRef(MiniSideIcons); //console.log('sidebarMenu', sidebarMenu.value); //userRole = superadmin admin user const userRole = dataUser; const roleSidebarItems = sidebarRole.filter((item) => item.role === userRole); //mergeSidebar (menu awal, menu role user) const mergedPages = mergeSidebar( sidebarMenu.value, roleSidebarItems[0].pages ); //Merge Icon dari sidebarMenu api let mergedIcons = null; if (mergedPages !== null) { //sidebarMiniSideIcons.value = mergedPages //mergeSidebarIcon (icon awal, icon role user) mergedIcons = mergeSidebarIcon(sidebarMiniSideIcons.value, mergedPages); } else { mergedIcons = sidebarMiniSideIcons.value; } //console.log('mergedPages useSidebarAccess', mergedPages,mergedIcons); //insert ke store Pinia akses.setAccess({ role: userRole, pages: roleSidebarItems[0].pages, icons: mergedIcons, }); akses.setMergedSidebar(mergedPages); //console.log('tes masuk storeMenu', akses.$state) const getPagesUser = akses.pageAccess; const getMergedPages = akses.mergedSidebar; const getMergedIcons = akses.iconItem; return { getPagesUser, getMergedPages, getMergedIcons, }; } export function usePermission(halamanRoute: string) { let canAkses = null const akses = useHakAksesStore(); const foundPage = akses.pageAccess.find((p) => p.path === halamanRoute); if (!foundPage?.permissions) { return { canAkses, }; } const pagePermissions = computed(() => foundPage.permissions); canAkses = pagePermissions.value; //console.log("pagePermissions", pagePermissions); return { canAkses, }; }