137 lines
3.1 KiB
JavaScript
137 lines
3.1 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";
|
|
import StrukOverlay from "../components/StrukOverlay.vue";
|
|
|
|
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: "/home",
|
|
name: "Home",
|
|
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;
|