38 lines
1.4 KiB
JavaScript
38 lines
1.4 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,
|
|
});
|
|
// Let navigation proceed — the page renders its own unauthenticated
|
|
// fallback, and the modal opens on top. abortNavigation() on an initial
|
|
// page load resets client state, which closes the modal before it shows.
|
|
return;
|
|
}
|
|
}
|
|
|
|
console.log(" - ✅ Authentication successful for:", memberData.value?.email);
|
|
});
|