Kasir/resources/js/router/index.js
2025-09-08 14:29:17 +07:00

131 lines
3.0 KiB
JavaScript

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 Home from "../pages/Home.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: "/test",
name: "Test",
component: Home
},
{
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;