import { SingleChapterResult } from "./types/slightlyDifferentStory"; import { IChapter } from "@models/stories/chapter"; import { IStory } from "@models/stories"; import { messages } from "@server/constants"; import { IUser } from "@models/user"; import { IDraft } from "@models/stories/draft"; const show404 = () => showError({ statusCode: 404, message: messages[404] }); export const storyMiddleware = defineNuxtRouteMiddleware(async (to, from) => { const { getSession } = useAuth(); await getSession({ force: true }); const { data } = useAuth(); console.log("to n from", to, from, data); const { data: story, error } = await useApiFetch(to.path); if (error.value) { return showError(error.value); } else if (!story.value) { return showError({ statusCode: 404, message: messages[404] }); } console.log("fns", story, error); if (!data?.value?.user && story.value?.currentChapter.loggedInOnly) { return navigateTo("/login"); } }); export const storyEditMiddleware = defineNuxtRouteMiddleware(async (to, from) => { const { data: curU } = useAuth(); const rtr = useRoute(); const { data: storyInfo } = await useApiFetch<({ chapters: (IChapter & { text: string })[] } & IStory) | null>(`/story/${rtr.params.id}/full`); if (!storyInfo.value) show404(); if (curU.value?.user?._id !== (storyInfo.value?.author as IUser)._id && curU.value?.user?._id !== (storyInfo.value?.coAuthor as IUser)?._id) { return showError({ statusCode: 403, message: messages[403], }); } }); export const draftEditMiddleware = defineNuxtRouteMiddleware(async (to, from) => { const { data: curU } = useAuth(); const rtr = useRoute(); const { data: storyInfo } = await useApiFetch(`/draft/${rtr.params.id}`); if (!storyInfo.value) show404(); if (curU.value?.user?._id !== (storyInfo.value?.author as IUser)._id && curU.value?.user?._id !== (storyInfo.value?.coAuthor as IUser)?._id) { return showError({ statusCode: 403, message: messages[403], }); } });