feat: Replace source file permission

v3.2
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" # 下载 DOWNLOAD = "READ+DOWNLOAD" # 下载
AUTH = "READ+AUTH" # 资源授权 AUTH = "READ+AUTH" # 资源授权
TAG = "READ+TAG" # 标签设置 TAG = "READ+TAG" # 标签设置
REPLACE = "READ+REPLACE" # 标签设置
class RoleGroup(Enum): class RoleGroup(Enum):
@ -340,7 +341,7 @@ Permission_Label = {
Operate.RELATE.value: _("Relate"), Operate.RELATE.value: _("Relate"),
Operate.ANNOTATION.value: _("Annotation"), Operate.ANNOTATION.value: _("Annotation"),
Operate.CLEAR_POLICY.value: _("Clear Policy"), Operate.CLEAR_POLICY.value: _("Clear Policy"),
Operate.DOWNLOAD.value: _('Download'), Operate.DOWNLOAD.value: _('Download Original Document'),
Operate.EMBED.value: _('Embed third party'), Operate.EMBED.value: _('Embed third party'),
Operate.ACCESS.value: _('Access restrictions'), Operate.ACCESS.value: _('Access restrictions'),
Operate.DISPLAY.value: _('Display Settings'), Operate.DISPLAY.value: _('Display Settings'),
@ -353,6 +354,8 @@ Permission_Label = {
Operate.ADD_KNOWLEDGE.value: _('Add to Knowledge Base'), Operate.ADD_KNOWLEDGE.value: _('Add to Knowledge Base'),
Operate.AUTH.value: _('resource authorization'), Operate.AUTH.value: _('resource authorization'),
Operate.TAG.value: _('Tag Setting'), Operate.TAG.value: _('Tag Setting'),
Operate.REPLACE.value: _('Replace Original Document'),
Group.APPLICATION_OVERVIEW.value: _('Overview'), Group.APPLICATION_OVERVIEW.value: _('Overview'),
Group.APPLICATION_ACCESS.value: _('Application Access'), Group.APPLICATION_ACCESS.value: _('Application Access'),
Group.APPLICATION_CHAT_USER.value: _('Dialogue users'), Group.APPLICATION_CHAT_USER.value: _('Dialogue users'),
@ -675,6 +678,12 @@ class PermissionConstants(Enum):
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE], resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE],
parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE] 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( KNOWLEDGE_HIT_TEST = Permission(
group=Group.KNOWLEDGE_HIT_TEST, operate=Operate.READ, group=Group.KNOWLEDGE_HIT_TEST, operate=Operate.READ,
role_list=[RoleConstants.ADMIN, RoleConstants.USER], 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], group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.TAG, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE" 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( SHARED_KNOWLEDGE_TAG_READ = Permission(
group=Group.SYSTEM_KNOWLEDGE_TAG, operate=Operate.READ, role_list=[RoleConstants.ADMIN], group=Group.SYSTEM_KNOWLEDGE_TAG, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE" 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], group=Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT, operate=Operate.TAG, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE" 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( RESOURCE_KNOWLEDGE_HIT_TEST = Permission(
group=Group.SYSTEM_RES_KNOWLEDGE_HIT_TEST, operate=Operate.READ, role_list=[RoleConstants.ADMIN], group=Group.SYSTEM_RES_KNOWLEDGE_HIT_TEST, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE" 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 tags=[_('Knowledge Base/Documentation')] # type: ignore
) )
@has_permissions( @has_permissions(
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(), PermissionConstants.KNOWLEDGE_DOCUMENT_REPLACE.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(), PermissionConstants.KNOWLEDGE_DOCUMENT_REPLACE.get_workspace_permission_workspace_manage_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
ViewPermission([RoleConstants.USER.get_workspace_role()], ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND), [PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -242,6 +242,16 @@ const workspace = {
], ],
'OR', '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_read: (source_id:string) => false,
knowledge_chat_user_edit: (source_id:string) => knowledge_chat_user_edit: (source_id:string) =>
hasPermission( hasPermission(

View File

@ -121,6 +121,7 @@ const PermissionConst = {
KNOWLEDGE_DOCUMENT_EXPORT: new Permission('KNOWLEDGE_DOCUMENT:READ+EXPORT'), KNOWLEDGE_DOCUMENT_EXPORT: new Permission('KNOWLEDGE_DOCUMENT:READ+EXPORT'),
KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'), KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'),
KNOWLEDGE_DOCUMENT_TAG: new Permission('KNOWLEDGE_DOCUMENT:READ+TAG'), 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_READ: new Permission('KNOWLEDGE_TAG:READ'),
KNOWLEDGE_TAG_CREATE: new Permission('KNOWLEDGE_TAG:READ+CREATE'), 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_EXPORT: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+EXPORT'),
SHARED_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'), 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_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_READ: new Permission('SYSTEM_KNOWLEDGE_TAG:READ'),
SHARED_KNOWLEDGE_TAG_EDIT: new Permission('SYSTEM_KNOWLEDGE_TAG:READ+EDIT'), 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_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_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_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_READ: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ'),
RESOURCE_KNOWLEDGE_TAG_CREATE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ+CREATE'), RESOURCE_KNOWLEDGE_TAG_CREATE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ+CREATE'),

View File

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