Open ...\src\routes\index.ts You will find the below example code. In the below code, we have shown four different routes. MainRoutes is the main layout routing you see after login.
routes\index.ts
import { createRouter, createWebHistory } from'vue-router';import MainRoutes from'./MainRoutes';import PublicRoutes from'./PublicRoutes';import { useAuthStore } from'@/stores/auth';exportconstrouter=createRouter({ history:createWebHistory(import.meta.env.BASE_URL), routes: [ { path:'/:pathMatch(.*)*',component: () =>import('@/views/pages/maintenance/error/Error404.vue') }, MainRoutes, PublicRoutes ]});router.beforeEach(async (to, from, next) => {// redirect to login page if not logged in and trying to access a restricted pageconstpublicPages= ['/'];constauth:AuthStore=useAuthStore();constisPublicPage=publicPages.includes(to.path);constauthRequired=!isPublicPage &&to.matched.some((record) =>record.meta.requiresAuth);// User not logged in and trying to access a restricted pageif (authRequired &&!auth.user) {auth.returnUrl =to.fullPath; // Save the intended pagenext('/login'); } elseif (auth.user &&to.path ==='/login') {// User logged in and trying to access the login pagenext({ query: {...to.query, redirect:auth.returnUrl !=='/'?to.fullPath :undefined } }); } else {// All other scenarios, either public page or authorized accessnext(); }});