feat: Replace source file permission

This commit is contained in:
zhangzhanwei 2025-10-22 11:22:24 +08:00 committed by zhanweizhang7
parent c3fca96c98
commit 4487964d17
11 changed files with 70 additions and 5 deletions

View File

@ -177,6 +177,7 @@ class Operate(Enum):
DOWNLOAD = "READ+DOWNLOAD" # 下载
AUTH = "READ+AUTH" # 资源授权
TAG = "READ+TAG" # 标签设置
REPLACE = "READ+REPLACE" # 标签设置
class RoleGroup(Enum):
@ -340,7 +341,7 @@ Permission_Label = {
Operate.RELATE.value: _("Relate"),
Operate.ANNOTATION.value: _("Annotation"),
Operate.CLEAR_POLICY.value: _("Clear Policy"),
Operate.DOWNLOAD.value: _('Download'),
Operate.DOWNLOAD.value: _('Download Original Document'),
Operate.EMBED.value: _('Embed third party'),
Operate.ACCESS.value: _('Access restrictions'),
Operate.DISPLAY.value: _('Display Settings'),
@ -353,6 +354,8 @@ Permission_Label = {
Operate.ADD_KNOWLEDGE.value: _('Add to Knowledge Base'),
Operate.AUTH.value: _('resource authorization'),
Operate.TAG.value: _('Tag Setting'),
Operate.REPLACE.value: _('Replace Original Document'),
Group.APPLICATION_OVERVIEW.value: _('Overview'),
Group.APPLICATION_ACCESS.value: _('Application Access'),
Group.APPLICATION_CHAT_USER.value: _('Dialogue users'),
@ -675,6 +678,12 @@ class PermissionConstants(Enum):
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE],
parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE]
)
KNOWLEDGE_DOCUMENT_REPLACE = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.REPLACE,
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE],
parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE]
)
KNOWLEDGE_HIT_TEST = Permission(
group=Group.KNOWLEDGE_HIT_TEST, operate=Operate.READ,
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
@ -1238,6 +1247,10 @@ class PermissionConstants(Enum):
group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.TAG, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE"
)
SHARED_KNOWLEDGE_DOCUMENT_REPLACE = Permission(
group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.REPLACE, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE"
)
SHARED_KNOWLEDGE_TAG_READ = Permission(
group=Group.SYSTEM_KNOWLEDGE_TAG, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE"
@ -1462,6 +1475,10 @@ class PermissionConstants(Enum):
group=Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT, operate=Operate.TAG, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE"
)
RESOURCE_KNOWLEDGE_DOCUMENT_REPLACE = Permission(
group=Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT, operate=Operate.REPLACE, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE"
)
RESOURCE_KNOWLEDGE_HIT_TEST = Permission(
group=Group.SYSTEM_RES_KNOWLEDGE_HIT_TEST, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE"

View File

@ -698,8 +698,8 @@ class DocumentView(APIView):
tags=[_('Knowledge Base/Documentation')] # type: ignore
)
@has_permissions(
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
PermissionConstants.KNOWLEDGE_DOCUMENT_REPLACE.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_DOCUMENT_REPLACE.get_workspace_permission_workspace_manage_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),

View File

@ -8736,4 +8736,10 @@ msgid "Tag"
msgstr ""
msgid "Tag Setting"
msgstr ""
msgid "Download Original Document"
msgstr ""
msgid "Replace Original Document"
msgstr ""

View File

@ -8863,3 +8863,9 @@ msgstr "标签管理"
msgid "Tag Setting"
msgstr "标签设置"
msgid "Download Original Document"
msgstr "下载原文档"
msgid "Replace Original Document"
msgstr "替换原文档"

View File

@ -8863,3 +8863,9 @@ msgstr "標籤管理"
msgid "Tag Setting"
msgstr "標籤設定"
msgid "Download Original Document"
msgstr "下載原文件"
msgid "Replace Original Document"
msgstr "替換原文件"

View File

@ -115,6 +115,12 @@ const systemManage = {
PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_TAG
],'OR'
),
doc_replace: () => hasPermission(
[
RoleConst.ADMIN,
PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_REPLACE
],'OR'
),
knowledge_chat_user_read: () =>
hasPermission([
RoleConst.ADMIN,

View File

@ -141,6 +141,14 @@ const share = {
],
'OR'
),
doc_replace: () =>
hasPermission (
[
RoleConst.ADMIN,
PermissionConst.SHARED_KNOWLEDGE_DOCUMENT_REPLACE
],
'OR'
),
problem_create: () =>
hasPermission (
[

View File

@ -23,6 +23,7 @@ const workspaceShare = {
doc_export: () => false,
doc_download: () => false,
doc_tag: () => false,
doc_replace: () => false,
knowledge_chat_user_read: () => false,
knowledge_chat_user_edit: () => false,

View File

@ -242,6 +242,16 @@ const workspace = {
],
'OR',
),
doc_replace: (source_id:string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_REPLACE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_REPLACE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
knowledge_chat_user_read: (source_id:string) => false,
knowledge_chat_user_edit: (source_id:string) =>
hasPermission(

View File

@ -121,6 +121,7 @@ const PermissionConst = {
KNOWLEDGE_DOCUMENT_EXPORT: new Permission('KNOWLEDGE_DOCUMENT:READ+EXPORT'),
KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'),
KNOWLEDGE_DOCUMENT_TAG: new Permission('KNOWLEDGE_DOCUMENT:READ+TAG'),
KNOWLEDGE_DOCUMENT_REPLACE: new Permission('KNOWLEDGE_DOCUMENT:READ+REPLACE'),
KNOWLEDGE_TAG_READ: new Permission('KNOWLEDGE_TAG:READ'),
KNOWLEDGE_TAG_CREATE: new Permission('KNOWLEDGE_TAG:READ+CREATE'),
@ -201,6 +202,7 @@ const PermissionConst = {
SHARED_KNOWLEDGE_DOCUMENT_EXPORT: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+EXPORT'),
SHARED_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'),
SHARED_KNOWLEDGE_DOCUMENT_TAG: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+TAG'),
SHARED_KNOWLEDGE_DOCUMENT_REPLACE: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+REPLACE'),
SHARED_KNOWLEDGE_TAG_READ: new Permission('SYSTEM_KNOWLEDGE_TAG:READ'),
SHARED_KNOWLEDGE_TAG_EDIT: new Permission('SYSTEM_KNOWLEDGE_TAG:READ+EDIT'),
@ -253,6 +255,7 @@ const PermissionConst = {
RESOURCE_KNOWLEDGE_DOCUMENT_EXPORT: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+EXPORT'),
RESOURCE_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'),
RESOURCE_KNOWLEDGE_DOCUMENT_TAG: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+TAG'),
RESOURCE_KNOWLEDGE_DOCUMENT_REPLACE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+REPLACE'),
RESOURCE_KNOWLEDGE_TAG_READ: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ'),
RESOURCE_KNOWLEDGE_TAG_CREATE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ+CREATE'),

View File

@ -519,6 +519,7 @@
{{ $t('views.document.setting.download') }}
</el-dropdown-item>
<el-upload
v-if="permissionPrecise.doc_replace(id)"
ref="elUploadRef"
:file-list="[]"
action="#"
@ -526,7 +527,7 @@
:show-file-list="false"
:on-change="(file: any, fileList: any) => replaceDocument(file, row)"
>
<el-dropdown-item v-if="permissionPrecise.doc_edit(id)">
<el-dropdown-item>
<el-icon class="color-secondary">
<Upload />
</el-icon>
@ -786,7 +787,8 @@ const MoreFilledPermission1 = (id: string) => {
permissionPrecise.value.doc_export(id) ||
permissionPrecise.value.doc_download(id) ||
permissionPrecise.value.doc_delete(id) ||
permissionPrecise.value.doc_tag(id)
permissionPrecise.value.doc_tag(id) ||
permissionPrecise.value.doc_replace(id)
)
}