From 691daaa7e84044167bf84e006be6becf315643e5 Mon Sep 17 00:00:00 2001 From: EYHN Date: Mon, 17 Feb 2025 03:51:54 +0000 Subject: [PATCH] fix(core): fix the permission check in peek view (#10213) --- .../modules/peek-view/view/doc-preview/doc-peek-view.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/frontend/core/src/modules/peek-view/view/doc-preview/doc-peek-view.tsx b/packages/frontend/core/src/modules/peek-view/view/doc-preview/doc-peek-view.tsx index 17504ff3b..e5b4e92da 100644 --- a/packages/frontend/core/src/modules/peek-view/view/doc-preview/doc-peek-view.tsx +++ b/packages/frontend/core/src/modules/peek-view/view/doc-preview/doc-peek-view.tsx @@ -9,6 +9,7 @@ import { import { EditorOutlineViewer } from '@affine/core/components/blocksuite/outline-viewer'; import { PageNotFound } from '@affine/core/desktop/pages/404'; import { EditorService } from '@affine/core/modules/editor'; +import { GuardService } from '@affine/core/modules/permissions'; import { DebugLogger } from '@affine/debug'; import { GfxControllerIdentifier } from '@blocksuite/affine/block-std/gfx'; import { RefNodeSlotsProvider } from '@blocksuite/affine/blocks'; @@ -83,8 +84,11 @@ function DocPeekPreviewEditor({ const defaultOpenProperty = useLiveData(editor.defaultOpenProperty$); const workbench = useService(WorkbenchService).workbench; const peekView = useService(PeekViewService).peekView; + const guardService = useService(GuardService); const editorElement = useLiveData(editor.editorContainer$); + const isInTrash = useLiveData(doc.record.trash$); + const handleOnEditorReady = useCallback( (editorContainer: AffineEditorContainer) => { if (!editorContainer.host) { @@ -145,6 +149,10 @@ function DocPeekPreviewEditor({ peekView.close(); }, [doc, peekView, workbench]); + const canEdit = useLiveData(guardService.can$('Doc_Update', doc.id)); + + const readonly = !canEdit || isInTrash; + return ( @@ -156,6 +164,7 @@ function DocPeekPreviewEditor({ className={styles.editor} mode={mode} page={doc.blockSuiteDoc} + readonly={readonly} onEditorReady={handleOnEditorReady} defaultOpenProperty={defaultOpenProperty} />