Skip to content

Commit 2714a94

Browse files
committed
feat: Resource authorization permission
1 parent f1c7f0f commit 2714a94

File tree

6 files changed

+66
-6
lines changed

6 files changed

+66
-6
lines changed

apps/common/constants/permission_constants.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ class Operate(Enum):
170170
TO_CHAT = "READ+TO_CHAT" # 去对话
171171
SETTING = "READ+SETTING" # 管理
172172
DOWNLOAD = "READ+DOWNLOAD" # 下载
173+
AUTH = "READ+AUTH"
173174

174175

175176
class RoleGroup(Enum):
@@ -335,6 +336,7 @@ def get_workspace_role(self):
335336
Operate.DD.value: _('Dingding'),
336337
Operate.WEIXIN_PUBLIC_ACCOUNT.value: _('Weixin Public Account'),
337338
Operate.ADD_KNOWLEDGE.value: _('Add to Knowledge Base'),
339+
Operate.AUTH.value:_('resource authorization'),
338340
Group.APPLICATION_OVERVIEW.value: _('Overview'),
339341
Group.APPLICATION_ACCESS.value: _('Application Access'),
340342
Group.APPLICATION_CHAT_USER.value: _('Dialogue users'),
@@ -481,6 +483,11 @@ class PermissionConstants(Enum):
481483
parent_group=[WorkspaceGroup.MODEL, UserGroup.MODEL],
482484
resource_permission_group_list=[ResourcePermissionConst.MODEL_MANGE]
483485
)
486+
MODEL_RESOURCE_AUTHORIZATION = Permission(
487+
group=Group.MODEL, operate=Operate.AUTH, role_list=[RoleConstants.ADMIN, RoleConstants.USER],
488+
parent_group=[WorkspaceGroup.MODEL, UserGroup.MODEL],
489+
resource_permission_group_list=[ResourcePermissionConst.MODEL_MANGE]
490+
)
484491
TOOL_READ = Permission(
485492
group=Group.TOOL, operate=Operate.READ, role_list=[RoleConstants.ADMIN, RoleConstants.USER],
486493
parent_group=[WorkspaceGroup.TOOL, UserGroup.TOOL],
@@ -520,6 +527,11 @@ class PermissionConstants(Enum):
520527
parent_group=[WorkspaceGroup.TOOL, UserGroup.TOOL],
521528
resource_permission_group_list=[ResourcePermissionConst.TOOL_MANGE]
522529
)
530+
TOOL_RESOURCE_AUTHORIZATION = Permission(
531+
group=Group.TOOL, operate=Operate.AUTH, role_list=[RoleConstants.ADMIN, RoleConstants.USER],
532+
parent_group=[WorkspaceGroup.TOOL, UserGroup.TOOL],
533+
resource_permission_group_list=[ResourcePermissionConst.TOOL_MANGE]
534+
)
523535
KNOWLEDGE_READ = Permission(
524536
group=Group.KNOWLEDGE, operate=Operate.READ, role_list=[RoleConstants.ADMIN, RoleConstants.USER],
525537
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_VIEW],
@@ -560,6 +572,11 @@ class PermissionConstants(Enum):
560572
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE],
561573
parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE]
562574
)
575+
KNOWLEDGE_RESOURCE_AUTHORIZATION = Permission(
576+
group=Group.KNOWLEDGE, operate=Operate.AUTH, role_list=[RoleConstants.ADMIN, RoleConstants.USER],
577+
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE],
578+
parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE]
579+
)
563580
KNOWLEDGE_DOCUMENT_READ = Permission(
564581
group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.READ,
565582
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
@@ -819,7 +836,11 @@ class PermissionConstants(Enum):
819836
parent_group=[WorkspaceGroup.APPLICATION, UserGroup.APPLICATION],
820837
resource_permission_group_list=[ResourcePermissionConst.APPLICATION_MANGE],
821838
)
822-
839+
APPLICATION_RESOURCE_AUTHORIZATION = Permission(group=Group.APPLICATION, operate=Operate.AUTH,
840+
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
841+
parent_group=[WorkspaceGroup.APPLICATION, UserGroup.APPLICATION],
842+
resource_permission_group_list=[ResourcePermissionConst.APPLICATION_MANGE],
843+
)
823844
APPLICATION_OVERVIEW_READ = Permission(group=Group.APPLICATION_OVERVIEW, operate=Operate.READ,
824845
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
825846
parent_group=[WorkspaceGroup.APPLICATION, UserGroup.APPLICATION],

apps/locales/en_US/LC_MESSAGES/django.po

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8657,4 +8657,7 @@ msgid "If not passed, the default value is What is this audio saying? Only answe
86578657
msgstr ""
86588658

86598659
msgid "The Qwen Omni series model supports inputting multiple modalities of data, including video, audio, images, and text, and outputting audio and text."
8660+
msgstr ""
8661+
8662+
msgid "Resource authorization"
86608663
msgstr ""

apps/locales/zh_CN/LC_MESSAGES/django.po

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8783,4 +8783,7 @@ msgid "If not passed, the default value is What is this audio saying? Only answe
87838783
msgstr "如果未传递,默认值为 这段音频在说什么,只回答音频的内容"
87848784

87858785
msgid "The Qwen Omni series model supports inputting multiple modalities of data, including video, audio, images, and text, and outputting audio and text."
8786-
msgstr "Qwen-Omni 系列模型支持输入多种模态的数据,包括视频、音频、图片、文本,并输出音频与文本"
8786+
msgstr "Qwen-Omni 系列模型支持输入多种模态的数据,包括视频、音频、图片、文本,并输出音频与文本"
8787+
8788+
msgid "Resource authorization"
8789+
msgstr "资源授权"

apps/locales/zh_Hant/LC_MESSAGES/django.po

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8783,4 +8783,7 @@ msgid "If not passed, the default value is What is this audio saying? Only answe
87838783
msgstr "如果未傳遞,預設值為這段音訊在說什麼,只回答音訊的內容"
87848784

87858785
msgid "The Qwen Omni series model supports inputting multiple modalities of data, including video, audio, images, and text, and outputting audio and text."
8786-
msgstr "Qwen-Omni系列模型支持輸入多種模態的數據,包括視頻、音訊、圖片、文字,並輸出音訊與文字"
8786+
msgstr "Qwen-Omni系列模型支持輸入多種模態的數據,包括視頻、音訊、圖片、文字,並輸出音訊與文字"
8787+
8788+
msgid "Resource authorization"
8789+
msgstr "資源授權"

apps/system_manage/views/user_resource_permission.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ class Page(APIView):
8989
responses=UserResourcePermissionPageAPI.get_response(),
9090
tags=[_('Resources authorization')] # type: ignore
9191
)
92+
@has_permissions(
93+
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_WORKSPACE_USER_RESOURCE_PERMISSION'),
94+
operate=Operate.READ),
95+
RoleConstants.ADMIN, RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
9296
def get(self, request: Request, workspace_id: str, user_id: str, resource: str, current_page: str,
9397
page_size: str):
9498
return result.success(UserResourcePermissionSerializer(
@@ -109,6 +113,10 @@ class WorkspaceResourceUserPermissionView(APIView):
109113
responses=ResourceUserPermissionAPI.get_response(),
110114
tags=[_('Resources authorization')] # type: ignore
111115
)
116+
@has_permissions(
117+
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_RESOURCE_AUTHORIZATION'),
118+
operate=Operate.AUTH),
119+
RoleConstants.ADMIN, RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
112120
def get(self, request: Request, workspace_id: str, target: str, resource: str):
113121
return result.success(ResourceUserPermissionSerializer(
114122
data={'workspace_id': workspace_id, "target": target, 'auth_target_type': resource,
@@ -127,6 +135,13 @@ def get(self, request: Request, workspace_id: str, target: str, resource: str):
127135
responses=ResourceUserPermissionEditAPI.get_response(),
128136
tags=[_('Resources authorization')] # type: ignore
129137
)
138+
@log(menu='System', operate='Edit user authorization status of resource',
139+
get_operation_object=lambda r, k: get_user_operation_object(k.get('user_id'))
140+
)
141+
@has_permissions(
142+
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_RESOURCE_AUTHORIZATION'),
143+
operate=Operate.AUTH),
144+
RoleConstants.ADMIN, RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
130145
def put(self, request: Request, workspace_id: str, target: str, resource: str):
131146
return result.success(ResourceUserPermissionSerializer(
132147
data={'workspace_id': workspace_id, "target": target, 'auth_target_type': resource, })
@@ -144,6 +159,10 @@ class Page(APIView):
144159
responses=ResourceUserPermissionPageAPI.get_response(),
145160
tags=[_('Resources authorization')] # type: ignore
146161
)
162+
@has_permissions(
163+
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_RESOURCE_AUTHORIZATION'),
164+
operate=Operate.AUTH),
165+
RoleConstants.ADMIN, RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
147166
def get(self, request: Request, workspace_id: str, target: str, resource: str, current_page: int,
148167
page_size: int):
149168
return result.success(ResourceUserPermissionSerializer(

ui/src/views/system/resource-authorization/constant.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import { AuthorizationEnum } from '@/enums/system'
22
import { t } from '@/locales'
3+
import { hasPermission } from '@/utils/permission'
4+
import { EditionConst } from '@/utils/permission/data'
35

4-
export const permissionOptions = [
6+
const notCommunity = hasPermission([EditionConst.IS_EE,EditionConst.IS_PE],'OR')
7+
8+
const permissionOptions = [
59
{
610
label: t('views.system.resourceAuthorization.setting.notAuthorized'),
711
value: AuthorizationEnum.NOT_AUTH,
@@ -17,9 +21,16 @@ export const permissionOptions = [
1721
value: AuthorizationEnum.MANAGE,
1822
desc: t('views.system.resourceAuthorization.setting.managementDesc'),
1923
},
20-
{
24+
]
25+
26+
if (notCommunity) {
27+
permissionOptions.push(
28+
{
2129
label: t('views.system.resourceAuthorization.setting.role'),
2230
value: AuthorizationEnum.ROLE,
2331
desc: t('views.system.resourceAuthorization.setting.roleDesc'),
2432
},
25-
]
33+
)
34+
}
35+
36+
export {permissionOptions}

0 commit comments

Comments
 (0)