import { createRouter, createWebHistory } from "vue-router"; import Produk from "../pages/Produk.vue"; import Brankas from "../pages/Brankas.vue"; import Tray from "../pages/Tray.vue"; import Kasir from "../pages/Kasir.vue"; import InputProduk from "../pages/InputProduk.vue"; import Kategori from "../pages/Kategori.vue"; import Sales from "../pages/Sales.vue"; import EditProduk from "../pages/EditProduk.vue"; import Laporan from "../pages/Laporan.vue"; import Login from "../pages/Login.vue"; import Akun from "../pages/Akun.vue"; import auth from "../middlewares/auth"; import guest from "../middlewares/guest"; import owner from "../middlewares/owner"; const middlewareMap = { auth, guest, owner }; const routes = [ { path: "/", name: "Login", component: Login, meta: { middleware: "guest" }, }, { path: "/produk", name: "Produk", component: Produk, meta: { middleware: "auth" }, }, { path: "/produk/baru", name: "ProdukBaru", component: InputProduk, meta: { middleware: ["auth", "owner"] }, }, { path: "/produk/:id/edit", name: "EditProduk", component: EditProduk, props: true, meta: { middleware: ["auth", "owner"] }, }, { path: "/brankas", name: "Brankas", component: Brankas, meta: { middleware: "auth" }, }, { path: "/nampan", name: "Nampan", component: Tray, meta: { middleware: "auth" }, }, { path: "/sales", name: "Sales", component: Sales, meta: { middleware: "auth" }, }, { path: "/kategori", name: "Kategori", component: Kategori, meta: { middleware: "auth" }, }, { path: "/kasir", name: "Kasir", component: Kasir, meta: { middleware: "auth" }, }, { path: "/laporan", name: "Laporan", component: Laporan, meta: { middleware: ["auth", "owner"] }, }, { path: "/akun", name: "Akun", component: Akun, meta: { middleware: ["auth", "owner"] }, }, ]; const router = createRouter({ history: createWebHistory(), routes, }); router.beforeEach((to, from, next) => { let middlewares = to.meta.middleware; if (!middlewares) return next(); if (!Array.isArray(middlewares)) { middlewares = [middlewares]; } let index = 0; const run = () => { const name = middlewares[index]; const mw = middlewareMap[name]; if (!mw) return next(); mw(to, from, (redirect) => { if (redirect) return next(redirect); index++; if (index < middlewares.length) { run(); } else { next(); } }); }; run(); }); export default router;