50 lines
1.1 KiB
TypeScript
50 lines
1.1 KiB
TypeScript
import {
|
|
createRouter,
|
|
createWebHistory,
|
|
createWebHashHistory,
|
|
RouteRecordRaw
|
|
} from "vue-router";
|
|
import Home from "@/views/home.vue";
|
|
import { useAuth } from '@/modules/auth';
|
|
|
|
// Define the routes (/*) for the app here.
|
|
const routes: Array<RouteRecordRaw> = [
|
|
{
|
|
path: "/",
|
|
name: "home",
|
|
component: Home,
|
|
meta: { requiresAuth: true },
|
|
},
|
|
{
|
|
path: "/login",
|
|
name: "login",
|
|
component: () => import("@/views/login.vue"),
|
|
meta: { requiresAuth: false },
|
|
},
|
|
{
|
|
path: "/register",
|
|
name: "register",
|
|
component: () => import("@/views/register.vue"),
|
|
meta: { requiresAuth: false },
|
|
},
|
|
];
|
|
|
|
const router = createRouter({
|
|
history: process.env.IS_ELECTRON ? createWebHashHistory() : createWebHistory(process.env.BASE_URL),
|
|
routes
|
|
});
|
|
|
|
router.beforeEach((to, from, next) => {
|
|
const { user } = useAuth();
|
|
|
|
// Not logged into a guarded route?
|
|
if (to.meta.requiresAuth && !user?.value) next({ name: 'login' });
|
|
|
|
// Logged in for an auth route
|
|
else if ((to.name == 'login' || to.name == 'register') && user!.value) next({ name: 'home' });
|
|
|
|
// Carry On...
|
|
else next();
|
|
})
|
|
|
|
export default router;
|