elearning/Frontend-Learner/middleware/auth.ts
2026-01-13 10:48:02 +07:00

28 lines
1.1 KiB
TypeScript

export default defineNuxtRouteMiddleware((to) => {
const { isAuthenticated } = useAuth()
// Pages that are accessible only when NOT logged in (Auth pages)
const authPages = [
'/auth/login',
'/auth/register',
'/auth/forgot-password',
'/auth/reset-password'
]
// Pages that are accessible as public landing
// Note: /courses and /discovery (now in browse/) might be public depending on logic,
// but let's assume browse pages are public or handled separately.
// For now, we list the root.
const publicPages = ['/', '/courses', '/browse', '/browse/discovery']
// 1. If user is authenticated and tries to access login/register (Keep landing page accessible)
if (isAuthenticated.value && authPages.includes(to.path)) {
return navigateTo('/dashboard', { replace: true })
}
// 2. If user is NOT authenticated and tries to access a page that has this middleware applied
// and is NOT one of the public or auth pages.
if (!isAuthenticated.value && !authPages.includes(to.path) && !publicPages.includes(to.path)) {
return navigateTo('/auth/login', { replace: true })
}
})