mime-chat/src/router.ts
2021-02-08 09:43:29 -06:00

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;