# Routing

### Configure Route

Open `resources\ts\plugins\1.router\guards.ts` You will find the below example code. In the below code, we have shown routes. **default** is the main layout routing you see after login.

```typescript
router.beforeEach((to) => {
    /*  for page loader (before page load it is show) */
    const uiStore = useUIStore();

    uiStore.isLoading = true;

    /*
     * If it's a public route, continue navigation. This kind of pages are allowed to visited by login & non-login users. Basically, without any restrictions.
     * Examples of public routes are, 404, under maintenance, etc.
     */
    if (to.meta.public) return;

    /**
     * Check if user is logged in by checking if token & user data exists in local storage
     */
    const isLoggedIn = !!(
      useCookie("userData").value && useCookie("accessToken").value
    );

    /*
      If user is logged in and is trying to access login like page, redirect to home
      else allow visiting the page
      (Don't allow executing further by return statement because next code will check for permissions)
     */
    if (to.meta.unauthenticatedOnly) {
      if (isLoggedIn) return "/";
      else return undefined;
    }

    if (!canNavigate(to) && to.matched.length) {
      // Get query string - fallback to getting it directly from URL if reactive value is empty
      let currentQueryString = queryString.value;
      if (!currentQueryString && typeof window !== "undefined") {
        const params = new URLSearchParams(window.location.search);
        currentQueryString = params.toString() ? `?${params.toString()}` : "";
      }

      // Build the full URL properly
      let fullUrl = to.fullPath;

      // Add query string if we have one and it's not already in the URL
      if (currentQueryString) {
        const queryParams = currentQueryString.startsWith("?")
          ? currentQueryString.substring(1)
          : currentQueryString;
        if (queryParams && !to.fullPath.includes(queryParams)) {
          const separator = to.fullPath.includes("?") ? "&" : "?";
          fullUrl = `${to.fullPath}${separator}${queryParams}`;
        }
      }

      return isLoggedIn
        ? { path: "/" }
        : {
            path: `/authentication/auth1/login1`,
            query: {
              ...to.query,
              to: to.fullPath !== "/" ? fullUrl : undefined,
            },
          };
    }
  });
```
