Skip to content

Commit c0ae784

Browse files
committed
feat: Tag permission interface
1 parent 2d38540 commit c0ae784

File tree

6 files changed

+69
-23
lines changed

6 files changed

+69
-23
lines changed

apps/common/constants/permission_constants.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ class Operate(Enum):
175175
TO_CHAT = "READ+TO_CHAT" # 去对话
176176
SETTING = "READ+SETTING" # 管理
177177
DOWNLOAD = "READ+DOWNLOAD" # 下载
178-
AUTH = "READ+AUTH"
178+
AUTH = "READ+AUTH" # 资源授权
179+
TAG = "READ+TAG" # 标签设置
179180

180181

181182
class RoleGroup(Enum):
@@ -325,6 +326,7 @@ def get_workspace_role(self):
325326
Group.APPLICATION.value: _("Application"),
326327
Group.KNOWLEDGE.value: _("Knowledge"),
327328
Group.KNOWLEDGE_DOCUMENT.value: _("Document"),
329+
Group.KNOWLEDGE_TAG.value: _("Tag"),
328330
Group.KNOWLEDGE_PROBLEM.value: _("Problem"),
329331
Group.KNOWLEDGE_HIT_TEST.value: _("Hit-Test"),
330332
Operate.IMPORT.value: _("Import"),
@@ -350,6 +352,7 @@ def get_workspace_role(self):
350352
Operate.WEIXIN_PUBLIC_ACCOUNT.value: _('Weixin Public Account'),
351353
Operate.ADD_KNOWLEDGE.value: _('Add to Knowledge Base'),
352354
Operate.AUTH.value: _('resource authorization'),
355+
Operate.TAG.value: _('Tag Setting'),
353356
Group.APPLICATION_OVERVIEW.value: _('Overview'),
354357
Group.APPLICATION_ACCESS.value: _('Application Access'),
355358
Group.APPLICATION_CHAT_USER.value: _('Dialogue users'),
@@ -368,13 +371,15 @@ def get_workspace_role(self):
368371
Group.SYSTEM_MODEL.value: _("Model"),
369372
Group.SYSTEM_KNOWLEDGE.value: _("Knowledge"),
370373
Group.SYSTEM_KNOWLEDGE_DOCUMENT.value: _("Document"),
374+
Group.SYSTEM_KNOWLEDGE_TAG.value: _("Tag"),
371375
Group.SYSTEM_KNOWLEDGE_PROBLEM.value: _("Problem"),
372376
Group.SYSTEM_KNOWLEDGE_HIT_TEST.value: _("Hit-Test"),
373377
Group.SYSTEM_KNOWLEDGE_CHAT_USER.value: _("Dialogue users"),
374378
Group.SYSTEM_RES_TOOL.value: _("Tool"),
375379
Group.SYSTEM_RES_MODEL.value: _("Model"),
376380
Group.SYSTEM_RES_KNOWLEDGE.value: _("Knowledge"),
377381
Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT.value: _("Document"),
382+
Group.SYSTEM_RES_KNOWLEDGE_TAG.value: _("Tag"),
378383
Group.SYSTEM_RES_KNOWLEDGE_PROBLEM.value: _("Problem"),
379384
Group.SYSTEM_RES_KNOWLEDGE_HIT_TEST.value: _("Hit-Test"),
380385
Group.SYSTEM_RES_KNOWLEDGE_CHAT_USER.value: _("Dialogue users"),
@@ -394,7 +399,6 @@ def get_workspace_role(self):
394399
# SystemGroup.RESOURCE.value: _("Resource"),
395400
}
396401

397-
398402
class Permission:
399403
"""
400404
权限信息
@@ -665,6 +669,12 @@ class PermissionConstants(Enum):
665669
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE],
666670
parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE]
667671
)
672+
KNOWLEDGE_DOCUMENT_TAG = Permission(
673+
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.TAG,
674+
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
675+
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE],
676+
parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE]
677+
)
668678
KNOWLEDGE_HIT_TEST = Permission(
669679
group=Group.KNOWLEDGE_HIT_TEST, operate=Operate.READ,
670680
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
@@ -1224,6 +1234,10 @@ class PermissionConstants(Enum):
12241234
group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.MIGRATE, role_list=[RoleConstants.ADMIN],
12251235
parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE"
12261236
)
1237+
SHARED_KNOWLEDGE_DOCUMENT_TAG = Permission(
1238+
group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.TAG, role_list=[RoleConstants.ADMIN],
1239+
parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE"
1240+
)
12271241
SHARED_KNOWLEDGE_TAG_READ = Permission(
12281242
group=Group.SYSTEM_KNOWLEDGE_TAG, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
12291243
parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE"
@@ -1444,6 +1458,10 @@ class PermissionConstants(Enum):
14441458
group=Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT, operate=Operate.MIGRATE, role_list=[RoleConstants.ADMIN],
14451459
parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE"
14461460
)
1461+
RESOURCE_KNOWLEDGE_DOCUMENT_TAG = Permission(
1462+
group=Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT, operate=Operate.TAG, role_list=[RoleConstants.ADMIN],
1463+
parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE"
1464+
)
14471465
RESOURCE_KNOWLEDGE_HIT_TEST = Permission(
14481466
group=Group.SYSTEM_RES_KNOWLEDGE_HIT_TEST, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
14491467
parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE"

apps/knowledge/views/document.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -519,8 +519,8 @@ class BatchAddTag(APIView):
519519
tags=[_('Knowledge Base/Documentation')] # type: ignore
520520
)
521521
@has_permissions(
522-
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(),
523-
PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(),
522+
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
523+
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_permission_workspace_manage_role(),
524524
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
525525
ViewPermission([RoleConstants.USER.get_workspace_role()],
526526
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
@@ -724,8 +724,8 @@ class Tags(APIView):
724724
tags=[_('Knowledge Base/Documentation')] # type: ignore
725725
)
726726
@has_permissions(
727-
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(),
728-
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(),
727+
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
728+
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_permission_workspace_manage_role(),
729729
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
730730
ViewPermission([RoleConstants.USER.get_workspace_role()],
731731
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
@@ -745,8 +745,8 @@ def get(self, request: Request, workspace_id: str, knowledge_id: str, document_i
745745
tags=[_('Knowledge Base/Documentation')] # type: ignore
746746
)
747747
@has_permissions(
748-
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(),
749-
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(),
748+
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
749+
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_permission_workspace_manage_role(),
750750
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
751751
ViewPermission([RoleConstants.USER.get_workspace_role()],
752752
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
@@ -770,8 +770,8 @@ class BatchDelete(APIView):
770770
tags=[_('Knowledge Base/Documentation')] # type: ignore
771771
)
772772
@has_permissions(
773-
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(),
774-
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(),
773+
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_knowledge_permission(),
774+
PermissionConstants.KNOWLEDGE_DOCUMENT_TAG.get_workspace_permission_workspace_manage_role(),
775775
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
776776
ViewPermission([RoleConstants.USER.get_workspace_role()],
777777
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()],

apps/knowledge/views/tag.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from common.auth import TokenAuth
77
from common.auth.authentication import has_permissions
8-
from common.constants.permission_constants import PermissionConstants, RoleConstants
8+
from common.constants.permission_constants import PermissionConstants, RoleConstants, ViewPermission, CompareConstants
99
from common.log.log import log
1010
from common.result import result
1111
from knowledge.api.tag import TagCreateAPI, TagDeleteAPI, TagEditAPI
@@ -25,9 +25,11 @@ class KnowledgeTagView(APIView):
2525
tags=[_('Knowledge Base/Tag')] # type: ignore
2626
)
2727
@has_permissions(
28-
PermissionConstants.KNOWLEDGE_TAG_CREATE.get_workspace_permission(),
28+
PermissionConstants.KNOWLEDGE_TAG_CREATE.get_workspace_knowledge_permission(),
29+
PermissionConstants.KNOWLEDGE_TAG_CREATE.get_workspace_permission_workspace_manage_role(),
2930
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
30-
RoleConstants.USER.get_workspace_role()
31+
ViewPermission([RoleConstants.USER.get_workspace_role()],
32+
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
3133
)
3234
@log(
3335
menu='tag', operate="Create a knowledge tag",
@@ -47,9 +49,11 @@ def post(self, request: Request, workspace_id: str, knowledge_id: str):
4749
tags=[_('Knowledge Base/Tag')] # type: ignore
4850
)
4951
@has_permissions(
50-
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission(),
52+
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_knowledge_permission(),
53+
PermissionConstants.KNOWLEDGE_TAG_READ.get_workspace_permission_workspace_manage_role(),
5154
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
52-
RoleConstants.USER.get_workspace_role()
55+
ViewPermission([RoleConstants.USER.get_workspace_role()],
56+
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
5357
)
5458
@log(
5559
menu='tag', operate="Create a knowledge tag",
@@ -74,9 +78,11 @@ class Operate(APIView):
7478
tags=[_('Knowledge Base/Tag')] # type: ignore
7579
)
7680
@has_permissions(
77-
PermissionConstants.KNOWLEDGE_TAG_EDIT.get_workspace_permission(),
81+
PermissionConstants.KNOWLEDGE_TAG_EDIT.get_workspace_knowledge_permission(),
82+
PermissionConstants.KNOWLEDGE_TAG_EDIT.get_workspace_permission_workspace_manage_role(),
7883
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
79-
RoleConstants.USER.get_workspace_role()
84+
ViewPermission([RoleConstants.USER.get_workspace_role()],
85+
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
8086
)
8187
@log(
8288
menu='tag', operate="Update a knowledge tag",
@@ -99,9 +105,11 @@ class Delete(APIView):
99105
tags=[_('Knowledge Base/Tag')] # type: ignore
100106
)
101107
@has_permissions(
102-
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_permission(),
108+
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_knowledge_permission(),
109+
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_permission_workspace_manage_role(),
103110
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
104-
RoleConstants.USER.get_workspace_role()
111+
ViewPermission([RoleConstants.USER.get_workspace_role()],
112+
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
105113
)
106114
@log(
107115
menu='tag', operate="Delete a knowledge tag",
@@ -124,9 +132,11 @@ class BatchDelete(APIView):
124132
tags=[_('Knowledge Base/Tag')] # type: ignore
125133
)
126134
@has_permissions(
127-
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_permission(),
135+
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_knowledge_permission(),
136+
PermissionConstants.KNOWLEDGE_TAG_DELETE.get_workspace_permission_workspace_manage_role(),
128137
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
129-
RoleConstants.USER.get_workspace_role()
138+
ViewPermission([RoleConstants.USER.get_workspace_role()],
139+
[PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND),
130140
)
131141
@log(
132142
menu='tag', operate="Batch Delete knowledge tag",

apps/locales/en_US/LC_MESSAGES/django.po

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8730,4 +8730,10 @@ msgid "Sample Rate"
87308730
msgstr ""
87318731

87328732
msgid "Captcha is required"
8733+
msgstr ""
8734+
8735+
msgid "Tag"
8736+
msgstr ""
8737+
8738+
msgid "Tag Setting"
87338739
msgstr ""

apps/locales/zh_CN/LC_MESSAGES/django.po

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8856,4 +8856,10 @@ msgid "Sample Rate"
88568856
msgstr "采样率"
88578857

88588858
msgid "Captcha is required"
8859-
msgstr "验证码是必填项"
8859+
msgstr "验证码是必填项"
8860+
8861+
msgid "Tag"
8862+
msgstr "标签管理"
8863+
8864+
msgid "Tag Setting"
8865+
msgstr "标签设置"

apps/locales/zh_Hant/LC_MESSAGES/django.po

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8856,4 +8856,10 @@ msgid "Sample Rate"
88568856
msgstr "採樣率"
88578857

88588858
msgid "Captcha is required"
8859-
msgstr "驗證碼是必填項"
8859+
msgstr "驗證碼是必填項"
8860+
8861+
msgid "Tag"
8862+
msgstr "標籤管理"
8863+
8864+
msgid "Tag Setting"
8865+
msgstr "標籤設定"

0 commit comments

Comments
 (0)