56 lines
1.7 KiB
TypeScript
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
|
|
};
|
|
};
|