Route guard

This middleware (runs both ssr and client) will hanlde if we are logged in or not and handles the different situations. This will run on every page (refresh)

guard.global.ts
// folder: /middleware/guard.global.ts

export default defineNuxtRouteMiddleware(async (to) => {
  const { user } = useAuth()

  // User is not logged in
  // Redirect to login page
  if (!user.value && to.path !== '/login') {
    return await navigateTo('/login')
  }

  // User is logged in redirect to url
  if (user.value && to.path === '/login') {
    return await navigateTo('/')
  }
})