From f09e5c8066bcc2eebf338e333e14195020e56996 Mon Sep 17 00:00:00 2001 From: oat_dev Date: Fri, 28 Jun 2024 13:58:31 +0700 Subject: [PATCH] feat: reading permission from role --- src/modules/router.ts | 19 +++++++++++++++++++ src/views/MainLayout.vue | 15 +++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/modules/router.ts b/src/modules/router.ts index 79622bae..ae346dee 100644 --- a/src/modules/router.ts +++ b/src/modules/router.ts @@ -1,6 +1,25 @@ import type { RouteRecordRaw } from "vue-router"; +const data = await fetch("/toc.json").then((r) => r.json()); + +const manual = data.filter((v: any) => v.children); + +const mergeManual: any[] = []; + +manual.forEach((v: any) => mergeManual.push(...v.children)); + +const manualRoute = mergeManual.map( + (v): { path: string; name: string; component: Function } => { + return { + path: v.path, + name: "Manual", + component: () => import("@/modules/01_manual/MainPage.vue"), + }; + } +); + const route: RouteRecordRaw[] = [ + // ...manualRoute, { path: "/manual/:name", name: "Manual", diff --git a/src/views/MainLayout.vue b/src/views/MainLayout.vue index edc6fc23..e7f3b832 100644 --- a/src/views/MainLayout.vue +++ b/src/views/MainLayout.vue @@ -13,6 +13,8 @@ const route = useRoute(); const { toc } = storeToRefs(manualStore); const { loader } = storeToRefs(dataStore); +const role = ref("user"); + const drawerMini = ref(false); const drawerMain = ref(false); const search = ref(""); @@ -39,7 +41,20 @@ const toggleBtnLeft = () => { onMounted(async () => { { const data = await fetch("/toc.json").then((r) => r.json()); + role.value = route.query.role as string; menuList.value = data; + if (role.value !== "admin") { + menuList.value = data.filter( + (v: any) => + !v.label.includes("คู่มือการตรวจสอบและแก้ไข") && + !v.label.includes("คู่มือการจัดการระบบ") + ); + } + if (role.value !== "officer" && role.value !== "admin") { + menuList.value = menuList.value.filter( + (v: any) => !v.label.includes("คู่มือการใช้งาน (เจ้าหน้าที่)") + ); + } } });