From a2f1f059c7365a24319f8c0086cc8ea8c419ce68 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Tue, 28 Mar 2023 22:32:35 -0400 Subject: [PATCH] fix: Users not mentionable when not in seamless editing mode --- server/routes/api/documents/documents.ts | 12 ++++++------ shared/utils/parseDocumentSlug.test.ts | 8 ++++++++ shared/utils/parseDocumentSlug.ts | 6 +++--- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/server/routes/api/documents/documents.ts b/server/routes/api/documents/documents.ts index b58e0e426..1042d2ec0 100644 --- a/server/routes/api/documents/documents.ts +++ b/server/routes/api/documents/documents.ts @@ -445,18 +445,18 @@ router.post( const { id, query } = ctx.input.body; const actor = ctx.state.auth.user; const { offset, limit } = ctx.state.pagination; - const document = await Document.findByPk(id); + const document = await Document.findByPk(id, { + userId: actor.id, + }); authorize(actor, "read", document); let users: User[] = []; let total = 0; if (document.collectionId) { - const [collection, memberIds] = await Promise.all([ - Collection.findByPk(document.collectionId), - Collection.membershipUserIds(document.collectionId), - ]); - authorize(actor, "update", collection); + const memberIds = await Collection.membershipUserIds( + document.collectionId + ); let where: WhereOptions = { id: { diff --git a/shared/utils/parseDocumentSlug.test.ts b/shared/utils/parseDocumentSlug.test.ts index 84cbf32f1..be35838f6 100644 --- a/shared/utils/parseDocumentSlug.test.ts +++ b/shared/utils/parseDocumentSlug.test.ts @@ -7,6 +7,14 @@ describe("#parseDocumentSlug", () => { ).toEqual("my-doc-y4j4tR4UuV"); }); + it("should work with paths after document slug", () => { + expect( + parseDocumentSlug( + "http://mywiki.getoutline.com/doc/my-doc-y4j4tR4UuV/edit" + ) + ).toEqual("my-doc-y4j4tR4UuV"); + }); + it("should work with subdomain qualified url", () => { expect( parseDocumentSlug("http://mywiki.getoutline.com/doc/my-doc-y4j4tR4UuV") diff --git a/shared/utils/parseDocumentSlug.ts b/shared/utils/parseDocumentSlug.ts index 189f69de7..4e9b49b55 100644 --- a/shared/utils/parseDocumentSlug.ts +++ b/shared/utils/parseDocumentSlug.ts @@ -17,7 +17,7 @@ export default function parseDocumentSlug(url: string) { } } - return parsed.lastIndexOf("/doc/") === 0 - ? parsed.replace(/^\/doc\//, "").split("#")[0] - : undefined; + const split = parsed.split("/"); + const indexOfDoc = split.indexOf("doc"); + return split[indexOfDoc + 1] ?? undefined; }