25 lines
794 B
TypeScript
25 lines
794 B
TypeScript
import { useProfileSession } from "#imports";
|
|
|
|
export default defineNuxtRouteMiddleware(async (to) => {
|
|
const { ensureSession, fetchCurrentProfile, activeProfile } =
|
|
useProfileSession();
|
|
await ensureSession();
|
|
|
|
const rawPath = to?.path ?? "";
|
|
const normalizedPath = rawPath.startsWith("/") ? rawPath : `/${rawPath}`;
|
|
const fullPath = to?.fullPath ?? normalizedPath;
|
|
const routeName = typeof to?.name === "string" ? to.name : "";
|
|
const isProfilesRoute =
|
|
normalizedPath.startsWith("/profiles") ||
|
|
fullPath.startsWith("/profiles") ||
|
|
routeName.startsWith("profiles");
|
|
|
|
if (process.client && !activeProfile.value) {
|
|
await fetchCurrentProfile();
|
|
}
|
|
|
|
if (process.client && !activeProfile.value && !isProfilesRoute) {
|
|
return navigateTo("/profiles");
|
|
}
|
|
});
|