To protect routes that require authentication, you can modify your Vue Router configuration in router.js
:
import { createRouter, createWebHistory } from 'vue-router';
import Home from './views/Home.vue';
import Product from './views/Product.vue';
import Login from './views/Login.vue';
import Register from './views/Register.vue';
import Cart from './components/Cart.vue';
const routes = [
{ path: '/', name: 'Home', component: Home },
{ path: '/product/:id', name: 'Product', component: Product },
{ path: '/login', name: 'Login', component: Login },
{ path: '/register', name: 'Register', component: Register },
{ path: '/cart', name: 'Cart', component: Cart, meta: { requiresAuth: true } },
];
const router = createRouter({
history: createWebHistory(),
routes,
});
router.beforeEach((to, from, next) => {
const requiresAuth = to.matched.some(record => record.meta.requiresAuth);
const isAuthenticated = !!localStorage.getItem('auth_token'); // Assuming you're storing the auth token in localStorage
if (requiresAuth && !isAuthenticated) {
next('/login');
} else {
next();
}
});
export default router;