Files
Lesstime/frontend/middleware/auth.global.ts
2026-03-15 19:51:51 +01:00

27 lines
822 B
TypeScript

export default defineNuxtRouteMiddleware(async (to) => {
const auth = useAuthStore()
const isLogin = to.path === '/login'
if (!auth.checked) {
await auth.ensureSession()
}
if (!isLogin && !auth.isAuthenticated) {
return navigateTo('/login')
}
if (isLogin && auth.isAuthenticated) {
const isClient = auth.user?.roles?.includes('ROLE_CLIENT') ?? false
return navigateTo(isClient ? '/portal' : '/')
}
// ROLE_CLIENT: redirect to /portal, block internal pages
if (auth.isAuthenticated && auth.user?.roles?.includes('ROLE_CLIENT')) {
const isPortalRoute = to.path.startsWith('/portal')
const isLoginRoute = to.path === '/login'
if (!isPortalRoute && !isLoginRoute) {
return navigateTo('/portal')
}
}
})