From 4152d3d7960a165269d0f6d0ef2576c8bbff076c Mon Sep 17 00:00:00 2001 From: Eric Mc Sween <5454374+emcsween@users.noreply.github.com> Date: Tue, 18 Feb 2025 08:57:42 -0500 Subject: [PATCH] Merge pull request #23667 from overleaf/em-read-only-label-version Prevent read-only users from labelling a version GitOrigin-RevId: 472e70f3860553b131f20afe3dfd01aa00bd48fa --- .../dropdown/history-dropdown-content.tsx | 16 +++++++++------- .../ide-react/context/permissions-context.tsx | 4 ++++ .../js/features/ide-react/types/permissions.ts | 1 + .../codemirror-editor-visual-readonly.spec.tsx | 1 + 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/services/web/frontend/js/features/history/components/change-list/dropdown/history-dropdown-content.tsx b/services/web/frontend/js/features/history/components/change-list/dropdown/history-dropdown-content.tsx index 6819cbb7da..ac7a0044d8 100644 --- a/services/web/frontend/js/features/history/components/change-list/dropdown/history-dropdown-content.tsx +++ b/services/web/frontend/js/features/history/components/change-list/dropdown/history-dropdown-content.tsx @@ -23,21 +23,23 @@ function HistoryDropdownContent({ closeDropdownForItem(version, 'moreOptions') }, [closeDropdownForItem, version]) - const { write } = usePermissionsContext() + const permissions = usePermissionsContext() return ( <> - + {permissions.labelVersion && ( + + )} - {write && ( + {permissions.write && ( > = { trackedWrite: false, write: false, admin: false, + labelVersion: false, }, review: { read: true, @@ -28,6 +29,7 @@ const permissionsMap: DeepReadonly> = { trackedWrite: true, write: false, admin: false, + labelVersion: true, }, readAndWrite: { read: true, @@ -35,6 +37,7 @@ const permissionsMap: DeepReadonly> = { trackedWrite: true, write: true, admin: false, + labelVersion: true, }, owner: { read: true, @@ -42,6 +45,7 @@ const permissionsMap: DeepReadonly> = { trackedWrite: true, write: true, admin: true, + labelVersion: true, }, } diff --git a/services/web/frontend/js/features/ide-react/types/permissions.ts b/services/web/frontend/js/features/ide-react/types/permissions.ts index 435a7f5328..d666967054 100644 --- a/services/web/frontend/js/features/ide-react/types/permissions.ts +++ b/services/web/frontend/js/features/ide-react/types/permissions.ts @@ -4,6 +4,7 @@ export type Permissions = { trackedWrite: boolean write: boolean admin: boolean + labelVersion: boolean } export type PermissionsLevel = 'owner' | 'readAndWrite' | 'review' | 'readOnly' diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-readonly.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-readonly.spec.tsx index 6072b262e4..ee60041e7d 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-readonly.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-readonly.spec.tsx @@ -31,6 +31,7 @@ const PermissionsProvider: FC = ({ children }) => ( trackedWrite: false, write: false, admin: false, + labelVersion: false, }} > {children}