75 lines
2.2 KiB
TypeScript
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,
|
|
};
|
|
}
|