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}