Files

75 lines
2.2 KiB
TypeScript

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