Browse Source

知识库列表权限

CzRger 2 months ago
parent
commit
41cccdec7e
3 changed files with 38 additions and 23 deletions
  1. 34 22
      web/app/(commonLayout)/datasets/DatasetCard.tsx
  2. 1 1
      web/models/common.ts
  3. 3 0
      web/models/datasets.ts

+ 34 - 22
web/app/(commonLayout)/datasets/DatasetCard.tsx

@@ -35,7 +35,7 @@ const DatasetCard = ({
   const { push } = useRouter()
   const { push } = useRouter()
   const EXTERNAL_PROVIDER = 'external' as const
   const EXTERNAL_PROVIDER = 'external' as const
 
 
-  const { isCurrentWorkspaceDatasetOperator } = useAppContext()
+  const { isCurrentWorkspaceDatasetOperator, currentWorkspace, userProfile } = useAppContext()
   const [tags, setTags] = useState<Tag[]>(dataset.tags)
   const [tags, setTags] = useState<Tag[]>(dataset.tags)
 
 
   const [showRenameModal, setShowRenameModal] = useState(false)
   const [showRenameModal, setShowRenameModal] = useState(false)
@@ -193,28 +193,40 @@ const DatasetCard = ({
               />
               />
             </div>
             </div>
           </div>
           </div>
-          <div className='mx-1 !hidden h-[14px] w-[1px] shrink-0 bg-divider-regular group-hover:!flex' />
-          <div className='!hidden shrink-0 group-hover:!flex'>
-            <CustomPopover
-              htmlContent={<Operations showDelete={!isCurrentWorkspaceDatasetOperator} />}
-              position="br"
-              trigger="click"
-              btnElement={
-                <div
-                  className='flex h-8 w-8 cursor-pointer items-center justify-center rounded-md'
-                >
-                  <RiMoreFill className='h-4 w-4 text-text-secondary' />
+          {
+            (
+              currentWorkspace.role === 'owner' // 所有者
+              || currentWorkspace.role === 'admin' // 管理员
+              || dataset.has_edit_permission // 编辑授权
+              || dataset.created_by === userProfile.id // 创建
+              || (dataset.edit_auth === 2 && dataset.dept_id === userProfile.dept_id) // 部门领导
+            ) && (
+              <>
+                <div className='mx-1 !hidden h-[14px] w-[1px] shrink-0 bg-divider-regular group-hover:!flex' />
+                <div className='!hidden shrink-0 group-hover:!flex'>
+                  <CustomPopover
+                    htmlContent={<Operations showDelete={!isCurrentWorkspaceDatasetOperator} />}
+                    position="br"
+                    trigger="click"
+                    btnElement={
+                      <div
+                        className='flex h-8 w-8 cursor-pointer items-center justify-center rounded-md'
+                      >
+                        <RiMoreFill className='h-4 w-4 text-text-secondary' />
+                      </div>
+                    }
+                    btnClassName={open =>
+                      cn(
+                        open ? '!bg-black/5 !shadow-none' : '!bg-transparent',
+                        'h-8 w-8 rounded-md border-none !p-2 hover:!bg-black/5',
+                      )
+                    }
+                    className={'!z-20 h-fit !w-[128px]'}
+                  />
                 </div>
                 </div>
-              }
-              btnClassName={open =>
-                cn(
-                  open ? '!bg-black/5 !shadow-none' : '!bg-transparent',
-                  'h-8 w-8 rounded-md border-none !p-2 hover:!bg-black/5',
-                )
-              }
-              className={'!z-20 h-fit !w-[128px]'}
-            />
-          </div>
+              </>
+            )
+          }
         </div>
         </div>
       </div>
       </div>
       {showRenameModal && (
       {showRenameModal && (

+ 1 - 1
web/models/common.ts

@@ -128,7 +128,7 @@ export type IWorkspace = {
 }
 }
 
 
 export type ICurrentWorkspace = Omit<IWorkspace, 'current'> & {
 export type ICurrentWorkspace = Omit<IWorkspace, 'current'> & {
-  role: 'owner' | 'admin' | 'editor' | 'dataset_operator' | 'normal'
+  role: 'owner' | 'admin' | 'leader' | 'editor' | 'dataset_operator' | 'normal'
   providers: Provider[]
   providers: Provider[]
   trial_end_reason?: string
   trial_end_reason?: string
   custom_config?: {
   custom_config?: {

+ 3 - 0
web/models/datasets.ts

@@ -68,6 +68,9 @@ export type DataSet = {
   }
   }
   built_in_field_enabled: boolean
   built_in_field_enabled: boolean
   doc_metadata?: MetadataInDoc[],
   doc_metadata?: MetadataInDoc[],
+  has_edit_permission: boolean
+  dept_id: string
+  edit_auth: number
 }
 }
 
 
 export type ExternalAPIItem = {
 export type ExternalAPIItem = {