Files
template-nuxtsim/composables/useAccess.ts

56 lines
1.7 KiB
TypeScript

import { useRoute } from "vue-router";
import { useSidebarAccess } from "~/composables/sidebarMenu/useSidebarAkses";
import { useHakAksesStore } from "@/stores/sidebarMenuAkses/useMenuAksesStore";
import type { PageAccess } from "~/types/menuAkses/access";
export const useAccess = (pageRoute: string, userRole: string) => {
//const route = useRoute();
const getRole = userRole;
//const meta = route.path; //halaman yang sedang diakses
const meta = pageRoute;
// const getPermissions = ['view'] // belum ambil data
const aksesMenu = useHakAksesStore();
//untuk merge akses menu dan akses ke store
if (!aksesMenu.role && aksesMenu.mergedSidebar.length === 0) {
//console.log("masuk useSidebarAccess kosong", aksesMenu.$state);
try {
const getMenuStore = useSidebarAccess(getRole);
} catch (error) {
console.log(error);
}
}
//console.log("masuk useSidebarAccess", aksesMenu.$state);
const getPagesUser = aksesMenu.pageAccess;
const getMergedPages = aksesMenu.mergedSidebar;
console.log("route dari useAccess", meta);
//console.log("mergerpage", getMergedPages);meta masih salah
//mencari permision per page
const cariPage: PageAccess[] = getPagesUser;
let getPermisionPage = null;
//console.log('cariPage', cariPage);
if (cariPage.length > 0) {
const found = cariPage.find((p) => p.path === meta);
//console.log("permisionPage", found);
if (found?.permissions) {
getPermisionPage = found.permissions;
}
}
//set permission ke pinia
aksesMenu.setPermissionPage(getPermisionPage);
return {
getRole, // role
getPagesUser, // akses menu per role
getMergedPages, // hasil merge akses menu
getPermisionPage, // permission per page
};
};