fix: share.document can be null when document is deleted

closes #3724
This commit is contained in:
Tom Moor
2022-07-02 19:56:15 +02:00
parent f744d488f6
commit 0c30d2bb34
3 changed files with 12 additions and 10 deletions

View File

@@ -64,7 +64,7 @@ export default async function loadDocument({
],
});
if (!share || share.document.archivedAt) {
if (!share || share.document?.archivedAt) {
throw InvalidRequestError("Document could not be found for shareId");
}
@@ -133,16 +133,18 @@ export default async function loadDocument({
// If we're attempting to load a document that isn't the document originally
// shared then includeChildDocuments must be enabled and the document must
// still be active and nested within the shared document
if (share.document.id !== document.id) {
if (share.documentId !== document.id) {
if (!share.includeChildDocuments) {
throw AuthorizationError();
}
const childDocumentIds = await share.document.getChildDocumentIds({
archivedAt: {
[Op.is]: null,
},
});
const childDocumentIds =
(await share.document?.getChildDocumentIds({
archivedAt: {
[Op.is]: null,
},
})) ?? [];
if (!childDocumentIds.includes(document.id)) {
throw AuthorizationError();
}

View File

@@ -113,7 +113,7 @@ class Share extends IdModel {
teamId: string;
@BelongsTo(() => Document, "documentId")
document: Document;
document: Document | null;
@ForeignKey(() => Document)
@Column(DataType.UUID)

View File

@@ -5,8 +5,8 @@ export default function present(share: Share, isAdmin = false) {
const data = {
id: share.id,
documentId: share.documentId,
documentTitle: share.document.title,
documentUrl: share.document.url,
documentTitle: share.document?.title,
documentUrl: share.document?.url,
published: share.published,
url: `${share.team.url}/share/${share.id}`,
createdBy: presentUser(share.user),