feat: Tag permission interface

This commit is contained in:
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" # 去对话
SETTING = "READ+SETTING" # 管理
DOWNLOAD = "READ+DOWNLOAD" # 下载
AUTH = "READ+AUTH"
AUTH = "READ+AUTH" # 资源授权
TAG = "READ+TAG" # 标签设置
class RoleGroup(Enum):
@ -325,6 +326,7 @@ Permission_Label = {
Group.APPLICATION.value: _("Application"),
Group.KNOWLEDGE.value: _("Knowledge"),
Group.KNOWLEDGE_DOCUMENT.value: _("Document"),
Group.KNOWLEDGE_TAG.value: _("Tag"),
Group.KNOWLEDGE_PROBLEM.value: _("Problem"),
Group.KNOWLEDGE_HIT_TEST.value: _("Hit-Test"),
Operate.IMPORT.value: _("Import"),
@ -350,6 +352,7 @@ Permission_Label = {
Operate.WEIXIN_PUBLIC_ACCOUNT.value: _('Weixin Public Account'),
Operate.ADD_KNOWLEDGE.value: _('Add to Knowledge Base'),
Operate.AUTH.value: _('resource authorization'),
Operate.TAG.value: _('Tag Setting'),
Group.APPLICATION_OVERVIEW.value: _('Overview'),
Group.APPLICATION_ACCESS.value: _('Application Access'),
Group.APPLICATION_CHAT_USER.value: _('Dialogue users'),
@ -368,6 +371,7 @@ Permission_Label = {
Group.SYSTEM_MODEL.value: _("Model"),
Group.SYSTEM_KNOWLEDGE.value: _("Knowledge"),
Group.SYSTEM_KNOWLEDGE_DOCUMENT.value: _("Document"),
Group.SYSTEM_KNOWLEDGE_TAG.value: _("Tag"),
Group.SYSTEM_KNOWLEDGE_PROBLEM.value: _("Problem"),
Group.SYSTEM_KNOWLEDGE_HIT_TEST.value: _("Hit-Test"),
Group.SYSTEM_KNOWLEDGE_CHAT_USER.value: _("Dialogue users"),
@ -375,6 +379,7 @@ Permission_Label = {
Group.SYSTEM_RES_MODEL.value: _("Model"),
Group.SYSTEM_RES_KNOWLEDGE.value: _("Knowledge"),
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_HIT_TEST.value: _("Hit-Test"),
Group.SYSTEM_RES_KNOWLEDGE_CHAT_USER.value: _("Dialogue users"),
@ -394,7 +399,6 @@ Permission_Label = {
# SystemGroup.RESOURCE.value: _("Resource"),
}
class Permission:
"""
权限信息
@ -665,6 +669,12 @@ class PermissionConstants(Enum):
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE],
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(
group=Group.KNOWLEDGE_HIT_TEST, operate=Operate.READ,
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],
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(
group=Group.SYSTEM_KNOWLEDGE_TAG, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
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],
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(
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

@ -519,8 +519,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_TAG.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.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),
@ -724,8 +724,8 @@ class DocumentView(APIView):
tags=[_('Knowledge Base/Documentation')] # type: ignore
)
@has_permissions(
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(),
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.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),
@ -745,8 +745,8 @@ class DocumentView(APIView):
tags=[_('Knowledge Base/Documentation')] # type: ignore
)
@has_permissions(
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(),
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.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),
@ -770,8 +770,8 @@ class DocumentView(APIView):
tags=[_('Knowledge Base/Documentation')] # type: ignore
)
@has_permissions(
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(),
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_permission_workspace_manage_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
ViewPermission([RoleConstants.USER.get_workspace_role()],
[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.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.result import result
from knowledge.api.tag import TagCreateAPI, TagDeleteAPI, TagEditAPI
@ -25,9 +25,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore
)
@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.USER.get_workspace_role()
ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
)
@log(
menu='tag', operate="Create a knowledge tag",
@ -47,9 +49,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore
)
@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.USER.get_workspace_role()
ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
)
@log(
menu='tag', operate="Create a knowledge tag",
@ -74,9 +78,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore
)
@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.USER.get_workspace_role()
ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
)
@log(
menu='tag', operate="Update a knowledge tag",
@ -99,9 +105,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore
)
@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.USER.get_workspace_role()
ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
)
@log(
menu='tag', operate="Delete a knowledge tag",
@ -124,9 +132,11 @@ class KnowledgeTagView(APIView):
tags=[_('Knowledge Base/Tag')] # type: ignore
)
@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.USER.get_workspace_role()
ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
)
@log(
menu='tag', operate="Batch Delete knowledge tag",

View File

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

View File

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

View File

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