doc: add route guard along with authentication

This commit is contained in:
Leon Xu
2022-01-01 12:50:50 -08:00
parent 41dfc326df
commit 2bad667d02
+18
View File
@@ -1,4 +1,5 @@
import { createRouter, createWebHistory } from "vue-router"; import { createRouter, createWebHistory } from "vue-router";
import { supabase } from "../supabase/init";
import Home from "../views/Home.vue"; import Home from "../views/Home.vue";
import Login from "../views/Login"; import Login from "../views/Login";
import Register from "../views/Register"; import Register from "../views/Register";
@@ -12,6 +13,7 @@ const routes = [
component: Home, component: Home,
meta: { meta: {
title: "Home", title: "Home",
auth: false,
}, },
}, },
{ {
@@ -20,6 +22,7 @@ const routes = [
component: Login, component: Login,
meta: { meta: {
title: "Login", title: "Login",
auth: false,
}, },
}, },
{ {
@@ -28,6 +31,7 @@ const routes = [
component: Register, component: Register,
meta: { meta: {
title: "Register", title: "Register",
auth: false,
}, },
}, },
{ {
@@ -36,6 +40,7 @@ const routes = [
component: Create, component: Create,
meta: { meta: {
title: "Create", title: "Create",
auth: true,
}, },
}, },
{ {
@@ -44,6 +49,7 @@ const routes = [
component: ViewWorkout, component: ViewWorkout,
meta: { meta: {
title: "View Workout", title: "View Workout",
auth: false,
}, },
}, },
]; ];
@@ -60,5 +66,17 @@ router.beforeEach((to, from, next) => {
}); });
// Route guard for auth routes // Route guard for auth routes
router.beforeEach((to, from, next) => {
const user = supabase.auth.user();
if (to.matched.some((res) => res.meta.auth)) {
if (user) {
next();
return;
}
next({ name: "Login" });
return;
}
next();
});
export default router; export default router;