Просмотр исходного кода

Merge pull request #23667 from overleaf/em-read-only-label-version

Prevent read-only users from labelling a version

GitOrigin-RevId: 472e70f3860553b131f20afe3dfd01aa00bd48fa
Eric Mc Sween 1 год назад
Родитель
Сommit
4152d3d796

+ 9 - 7
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 (
     <>
-      <AddLabel
-        projectId={projectId}
-        version={version}
-        closeDropdown={closeDropdown}
-      />
+      {permissions.labelVersion && (
+        <AddLabel
+          projectId={projectId}
+          version={version}
+          closeDropdown={closeDropdown}
+        />
+      )}
       <Download
         projectId={projectId}
         version={version}
         closeDropdown={closeDropdown}
       />
-      {write && (
+      {permissions.write && (
         <RestoreProject
           projectId={projectId}
           version={version}

+ 4 - 0
services/web/frontend/js/features/ide-react/context/permissions-context.tsx

@@ -21,6 +21,7 @@ const permissionsMap: DeepReadonly<Record<PermissionsLevel, Permissions>> = {
     trackedWrite: false,
     write: false,
     admin: false,
+    labelVersion: false,
   },
   review: {
     read: true,
@@ -28,6 +29,7 @@ const permissionsMap: DeepReadonly<Record<PermissionsLevel, Permissions>> = {
     trackedWrite: true,
     write: false,
     admin: false,
+    labelVersion: true,
   },
   readAndWrite: {
     read: true,
@@ -35,6 +37,7 @@ const permissionsMap: DeepReadonly<Record<PermissionsLevel, Permissions>> = {
     trackedWrite: true,
     write: true,
     admin: false,
+    labelVersion: true,
   },
   owner: {
     read: true,
@@ -42,6 +45,7 @@ const permissionsMap: DeepReadonly<Record<PermissionsLevel, Permissions>> = {
     trackedWrite: true,
     write: true,
     admin: true,
+    labelVersion: true,
   },
 }
 

+ 1 - 0
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'

+ 1 - 0
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}