diff --git a/lib/server/dbHelpers/listQuerier.ts b/lib/server/dbHelpers/listQuerier.ts index 0430161..4049993 100644 --- a/lib/server/dbHelpers/listQuerier.ts +++ b/lib/server/dbHelpers/listQuerier.ts @@ -22,6 +22,7 @@ export default async function (query, context, limit?: number, sort?) { path: "ficmas", populate: { path: "wisher", model: "User", select: "username _id" }, }) + .populate("coAuthor", "username _id") .populate("chapters.bands") .populate({ path: "challenge", model: Challenge }) .populate("author", "username _id") diff --git a/lib/server/dbHelpers/storyQuerier.ts b/lib/server/dbHelpers/storyQuerier.ts index 5cb07e5..d5eefa4 100644 --- a/lib/server/dbHelpers/storyQuerier.ts +++ b/lib/server/dbHelpers/storyQuerier.ts @@ -11,6 +11,7 @@ export default async function (ev: H3Event) { }); const story = await Story.findById(id) .populate("author", "username profile blocked") + .populate("coAuthor", "username profile") .populate("chapters.bands") .populate({ path: "ficmas", diff --git a/lib/server/middlewareButNotReally/storyPrivileges.ts b/lib/server/middlewareButNotReally/storyPrivileges.ts index 7a79419..b9ac220 100644 --- a/lib/server/middlewareButNotReally/storyPrivileges.ts +++ b/lib/server/middlewareButNotReally/storyPrivileges.ts @@ -7,5 +7,8 @@ export function canDelete(event: H3Event, story: IStory) { ); } export function canModify(event: H3Event, story: IStory) { - return event.context.currentUser?._id === story.author._id; + return ( + event.context.currentUser?._id === story.author._id || + story.coAuthor._id === event.context.currentUser?._id + ); } diff --git a/server/api/story/[id]/index.put.ts b/server/api/story/[id]/index.put.ts index f5ae975..7a29bdc 100644 --- a/server/api/story/[id]/index.put.ts +++ b/server/api/story/[id]/index.put.ts @@ -33,6 +33,7 @@ export default eventHandler(async (ev) => { const update: Partial = { title: body.title, completed: body.completed, + coAuthor: body.coAuthor, chapters: [], }; for (const oc of os.chapters) { diff --git a/server/api/story/new.post.ts b/server/api/story/new.post.ts index 1ad789f..75180db 100644 --- a/server/api/story/new.post.ts +++ b/server/api/story/new.post.ts @@ -18,6 +18,7 @@ export default eventHandler(async (ev) => { const story = new Story({ title: body.title, author: ev.context.currentUser!._id, + coAuthor: body.coAuthor, views: 0, reviews: 0, downloads: 0,