feat: Tag permission interface

v3.2
zhangzhanwei 2025-10-22 10:16:36 +08:00 committed by zhanweizhang7
parent 2d38540070
commit c0ae78411e
6 changed files with 69 additions and 23 deletions

View File

@ -175,7 +175,8 @@ class Operate(Enum):
TO_CHAT = "READ+TO_CHAT" # 去对话 TO_CHAT = "READ+TO_CHAT" # 去对话
SETTING = "READ+SETTING" # 管理 SETTING = "READ+SETTING" # 管理
DOWNLOAD = "READ+DOWNLOAD" # 下载 DOWNLOAD = "READ+DOWNLOAD" # 下载
AUTH = "READ+AUTH" AUTH = "READ+AUTH" # 资源授权
TAG = "READ+TAG" # 标签设置
class RoleGroup(Enum): class RoleGroup(Enum):
@ -325,6 +326,7 @@ Permission_Label = {
Group.APPLICATION.value: _("Application"), Group.APPLICATION.value: _("Application"),
Group.KNOWLEDGE.value: _("Knowledge"), Group.KNOWLEDGE.value: _("Knowledge"),
Group.KNOWLEDGE_DOCUMENT.value: _("Document"), Group.KNOWLEDGE_DOCUMENT.value: _("Document"),
Group.KNOWLEDGE_TAG.value: _("Tag"),
Group.KNOWLEDGE_PROBLEM.value: _("Problem"), Group.KNOWLEDGE_PROBLEM.value: _("Problem"),
Group.KNOWLEDGE_HIT_TEST.value: _("Hit-Test"), Group.KNOWLEDGE_HIT_TEST.value: _("Hit-Test"),
Operate.IMPORT.value: _("Import"), Operate.IMPORT.value: _("Import"),
@ -350,6 +352,7 @@ Permission_Label = {
Operate.WEIXIN_PUBLIC_ACCOUNT.value: _('Weixin Public Account'), Operate.WEIXIN_PUBLIC_ACCOUNT.value: _('Weixin Public Account'),
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'),
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'),
@ -368,6 +371,7 @@ Permission_Label = {
Group.SYSTEM_MODEL.value: _("Model"), Group.SYSTEM_MODEL.value: _("Model"),
Group.SYSTEM_KNOWLEDGE.value: _("Knowledge"), Group.SYSTEM_KNOWLEDGE.value: _("Knowledge"),
Group.SYSTEM_KNOWLEDGE_DOCUMENT.value: _("Document"), Group.SYSTEM_KNOWLEDGE_DOCUMENT.value: _("Document"),
Group.SYSTEM_KNOWLEDGE_TAG.value: _("Tag"),
Group.SYSTEM_KNOWLEDGE_PROBLEM.value: _("Problem"), Group.SYSTEM_KNOWLEDGE_PROBLEM.value: _("Problem"),
Group.SYSTEM_KNOWLEDGE_HIT_TEST.value: _("Hit-Test"), Group.SYSTEM_KNOWLEDGE_HIT_TEST.value: _("Hit-Test"),
Group.SYSTEM_KNOWLEDGE_CHAT_USER.value: _("Dialogue users"), Group.SYSTEM_KNOWLEDGE_CHAT_USER.value: _("Dialogue users"),
@ -375,6 +379,7 @@ Permission_Label = {
Group.SYSTEM_RES_MODEL.value: _("Model"), Group.SYSTEM_RES_MODEL.value: _("Model"),
Group.SYSTEM_RES_KNOWLEDGE.value: _("Knowledge"), Group.SYSTEM_RES_KNOWLEDGE.value: _("Knowledge"),
Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT.value: _("Document"), Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT.value: _("Document"),
Group.SYSTEM_RES_KNOWLEDGE_TAG.value: _("Tag"),
Group.SYSTEM_RES_KNOWLEDGE_PROBLEM.value: _("Problem"), Group.SYSTEM_RES_KNOWLEDGE_PROBLEM.value: _("Problem"),
Group.SYSTEM_RES_KNOWLEDGE_HIT_TEST.value: _("Hit-Test"), Group.SYSTEM_RES_KNOWLEDGE_HIT_TEST.value: _("Hit-Test"),
Group.SYSTEM_RES_KNOWLEDGE_CHAT_USER.value: _("Dialogue users"), Group.SYSTEM_RES_KNOWLEDGE_CHAT_USER.value: _("Dialogue users"),
@ -394,7 +399,6 @@ Permission_Label = {
# SystemGroup.RESOURCE.value: _("Resource"), # SystemGroup.RESOURCE.value: _("Resource"),
} }
class Permission: class Permission:
""" """
权限信息 权限信息
@ -665,6 +669,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_TAG = Permission(
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.TAG,
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],
@ -1224,6 +1234,10 @@ class PermissionConstants(Enum):
group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.MIGRATE, role_list=[RoleConstants.ADMIN], group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.MIGRATE, 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_TAG = Permission(
group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.TAG, 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"
@ -1444,6 +1458,10 @@ class PermissionConstants(Enum):
group=Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT, operate=Operate.MIGRATE, role_list=[RoleConstants.ADMIN], group=Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT, operate=Operate.MIGRATE, 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_TAG = Permission(
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_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

@ -519,8 +519,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_TAG.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(), PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.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),
@ -724,8 +724,8 @@ class DocumentView(APIView):
tags=[_('Knowledge Base/Documentation')] # type: ignore tags=[_('Knowledge Base/Documentation')] # type: ignore
) )
@has_permissions( @has_permissions(
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(), PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(), PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.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),
@ -745,8 +745,8 @@ class DocumentView(APIView):
tags=[_('Knowledge Base/Documentation')] # type: ignore tags=[_('Knowledge Base/Documentation')] # type: ignore
) )
@has_permissions( @has_permissions(
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(), PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(), PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.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),
@ -770,8 +770,8 @@ class DocumentView(APIView):
tags=[_('Knowledge Base/Documentation')] # type: ignore tags=[_('Knowledge Base/Documentation')] # type: ignore
) )
@has_permissions( @has_permissions(
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(), PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(), PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.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()], [PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()],

View File

@ -5,7 +5,7 @@ from rest_framework.views import APIView
from common.auth import TokenAuth from common.auth import TokenAuth
from common.auth.authentication import has_permissions from common.auth.authentication import has_permissions
from common.constants.permission_constants import PermissionConstants, RoleConstants from common.constants.permission_constants import PermissionConstants, RoleConstants, ViewPermission, CompareConstants
from common.log.log import log from common.log.log import log
from common.result import result from common.result import result
from knowledge.api.tag import TagCreateAPI, TagDeleteAPI, TagEditAPI from knowledge.api.tag import TagCreateAPI, TagDeleteAPI, TagEditAPI
@ -25,9 +25,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore tags=[_('Knowledge Base/Tag')] # type: ignore
) )
@has_permissions( @has_permissions(
PermissionConstants.KNOWLEDGE_TAG_CREATE.get_workspace_permission(), PermissionConstants.KNOWLEDGE_TAG_CREATE.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_CREATE.get_workspace_permission_workspace_manage_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
RoleConstants.USER.get_workspace_role() ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
) )
@log( @log(
menu='tag', operate="Create a knowledge tag", menu='tag', operate="Create a knowledge tag",
@ -47,9 +49,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore tags=[_('Knowledge Base/Tag')] # type: ignore
) )
@has_permissions( @has_permissions(
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission(), PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
RoleConstants.USER.get_workspace_role() ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
) )
@log( @log(
menu='tag', operate="Create a knowledge tag", menu='tag', operate="Create a knowledge tag",
@ -74,9 +78,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore tags=[_('Knowledge Base/Tag')] # type: ignore
) )
@has_permissions( @has_permissions(
PermissionConstants.KNOWLEDGE_TAG_EDIT.get_workspace_permission(), PermissionConstants.KNOWLEDGE_TAG_EDIT.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_EDIT.get_workspace_permission_workspace_manage_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
RoleConstants.USER.get_workspace_role() ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
) )
@log( @log(
menu='tag', operate="Update a knowledge tag", menu='tag', operate="Update a knowledge tag",
@ -99,9 +105,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore tags=[_('Knowledge Base/Tag')] # type: ignore
) )
@has_permissions( @has_permissions(
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_permission(), PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_permission_workspace_manage_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
RoleConstants.USER.get_workspace_role() ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
) )
@log( @log(
menu='tag', operate="Delete a knowledge tag", menu='tag', operate="Delete a knowledge tag",
@ -124,9 +132,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore tags=[_('Knowledge Base/Tag')] # type: ignore
) )
@has_permissions( @has_permissions(
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_permission(), PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_permission_workspace_manage_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
RoleConstants.USER.get_workspace_role() ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
) )
@log( @log(
menu='tag', operate="Batch Delete knowledge tag", menu='tag', operate="Batch Delete knowledge tag",

View File

@ -8730,4 +8730,10 @@ msgid "Sample Rate"
msgstr "" msgstr ""
msgid "Captcha is required" msgid "Captcha is required"
msgstr ""
msgid "Tag"
msgstr ""
msgid "Tag Setting"
msgstr "" msgstr ""

View File

@ -8856,4 +8856,10 @@ msgid "Sample Rate"
msgstr "采样率" msgstr "采样率"
msgid "Captcha is required" msgid "Captcha is required"
msgstr "验证码是必填项" msgstr "验证码是必填项"
msgid "Tag"
msgstr "标签管理"
msgid "Tag Setting"
msgstr "标签设置"

View File

@ -8856,4 +8856,10 @@ msgid "Sample Rate"
msgstr "採樣率" msgstr "採樣率"
msgid "Captcha is required" msgid "Captcha is required"
msgstr "驗證碼是必填項" msgstr "驗證碼是必填項"
msgid "Tag"
msgstr "標籤管理"
msgid "Tag Setting"
msgstr "標籤設定"