36 lines
No EOL
1.3 KiB
JavaScript
36 lines
No EOL
1.3 KiB
JavaScript
export default defineNuxtRouteMiddleware(async (to, from) => {
|
|
// Skip on server-side rendering
|
|
if (process.server) {
|
|
console.log('🛡️ Auth middleware - skipping on server')
|
|
return
|
|
}
|
|
|
|
const { memberData, checkMemberStatus } = useAuth()
|
|
const { openLoginModal } = useLoginModal()
|
|
|
|
console.log('🛡️ Auth middleware (CLIENT) - route:', to.path)
|
|
console.log(' - memberData exists:', !!memberData.value)
|
|
console.log(' - Running on:', process.server ? 'SERVER' : 'CLIENT')
|
|
|
|
// If no member data, try to check authentication
|
|
if (!memberData.value) {
|
|
console.log(' - No member data, checking authentication...')
|
|
const isAuthenticated = await checkMemberStatus()
|
|
console.log(' - Authentication result:', isAuthenticated)
|
|
|
|
if (!isAuthenticated) {
|
|
console.log(' - ❌ Authentication failed, showing login modal')
|
|
// Open login modal instead of redirecting
|
|
openLoginModal({
|
|
title: 'Sign in to continue',
|
|
description: 'You need to be signed in to access this page',
|
|
dismissible: true,
|
|
redirectTo: to.fullPath,
|
|
})
|
|
// Abort navigation - stay on current page with modal open
|
|
return abortNavigation()
|
|
}
|
|
}
|
|
|
|
console.log(' - ✅ Authentication successful for:', memberData.value?.email)
|
|
}) |